我运行一个测试和所有断言通,但我再次运行测试,并在我的情况,我收到以下错误:
验证失败:电子邮件已被采取
它似乎增加:序列(:电子邮件){| n | “nobody #{n}@xyz.com”}对于女生来说毫无意义
测试似乎有时会通过,而其他测试似乎因错误原因而失败。
请告知问题/解决方案。
我运行一个测试和所有断言通,但我再次运行测试,并在我的情况,我收到以下错误:
验证失败:电子邮件已被采取
它似乎增加:序列(:电子邮件){| n | “nobody #{n}@xyz.com”}对于女生来说毫无意义
测试似乎有时会通过,而其他测试似乎因错误原因而失败。
请告知问题/解决方案。
尝试在运行测试用例之前删除表中的所有记录。
如: -
describe User do
before(:each) do
User.delete_all
end
it "validate e-mail" do
(do staff..)
end
end
我不确定这是一个明确的解决方案,但我使用懒惰属性添加随机数到我的产品参考的工厂,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
你任何 “之前(:所有)” 有块?也许你错过了相应的“after(:all)”来清理数据。之前(:each)充当事务,因此数据库得到清理,在(:all)像普通查询一样工作之前,您不得不在after(:all)块中处理清理。
您是在每次运行之前/之后清除测试数据库吗?如果你运行测试,然后手动运行'rake db:test:prepare',然后再次运行测试,它们通过还是失败? (通常这是由'database_cleaner'或事务性固定装置自动处理的,但某些东西可能配置不正确,或者您的数据库可能处于不良状态) – Grantovich