FactoryGirl在测试后不删除用户

时间:2012-05-06 01:08:44

标签: ruby-on-rails rspec factory-bot

我正在进行测试,第一次,他们都通过绿色。如果我再次运行测试,有些会失败并显示以下消息:

 Failure/Error: @user = Factory :user
     ActiveRecord::RecordInvalid:
       Validation failed: Email has already been taken

我真的很困惑为什么会这样。我以为rspec没有将值推送到数据库。如果我清除测试数据库,这是固定的,但是,在第二轮测试执行时,一些失败并出现相同的错误。

我有什么想法可以解决这个问题?注意,我最近安装了cancan gem,也许它必须用它做点什么?

2 个答案:

答案 0 :(得分:2)

Factory Girl不是应该删除的数据,它通常是RSpec(通过use_transactional_fixtures选项)或其他工具,如database_cleaner

如果您的测试数据库未正确清理,我建议您使用database_cleaner

答案 1 :(得分:0)

我遇到过一些事情没有正确清理的情况,并且运行rake db:test:prepare来清理数据库就像一个魅力(假设你没有预先填充数据)。如果确实需要预填充数据,请使用固定装置或其他类似解决方案重置为原始状态。