例如:
我运行了一个测试,所有断言都通过了,但我再次运行测试,在我的情况下,我收到了以下错误:
验证失败:电子邮件已被接收
它似乎在添加:sequence(:电子邮件){|n|"nobody#{n}@xyz.com对于factorygirl来说毫无意义
这些测试有时似乎通过了,而另一些测试则因为这样的错误而失败。
请就问题/解决方案提出建议。
在运行测试用例之前,尝试从表中删除所有记录。
例如:-
describe User do
before(:each) do
User.delete_all
end
it "validate e-mail" do
(do staff..)
end
end
我不确定这是一个最终的解决方案,但我使用lazy属性在factorygirl工厂的产品参考中添加了随机数。
示例:
FactoryGirl.define do
factory :product do
reference {"AB"+rand(999).to_s}
description "Test Product"
quantity {(1..9999).to_a.sample}
price_per_unit {((1..999999).to_a.sample)/100.to_f}
end
end
您有任何"before(:all)"块吗?也许您缺少相应的"after(:all)"来清理数据。before(:each)充当一个事务,以便清理数据库,在(:all)像普通查询一样工作之前,您必须在after(:all)块中处理清理。