Rspec运行测试导致验证错误



例如:

我运行了一个测试,所有断言都通过了,但我再次运行测试,在我的情况下,我收到了以下错误:

验证失败:电子邮件已被接收

它似乎在添加: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)块中处理清理。

最新更新