我正在进行测试,第一次,他们都通过绿色。如果我再次运行测试,有些会失败并显示以下消息:
Failure/Error: @user = Factory :user
ActiveRecord::RecordInvalid:
Validation failed: Email has already been taken
我真的很困惑为什么会这样。我以为rspec没有将值推送到数据库。如果我清除测试数据库,这是固定的,但是,在第二轮测试执行时,一些失败并出现相同的错误。
我有什么想法可以解决这个问题?注意,我最近安装了cancan gem,也许它必须用它做点什么?
答案 0 :(得分:2)
Factory Girl不是应该删除的数据,它通常是RSpec(通过use_transactional_fixtures
选项)或其他工具,如database_cleaner
。
如果您的测试数据库未正确清理,我建议您使用database_cleaner
。
答案 1 :(得分:0)
我遇到过一些事情没有正确清理的情况,并且运行rake db:test:prepare
来清理数据库就像一个魅力(假设你没有预先填充数据)。如果确实需要预填充数据,请使用固定装置或其他类似解决方案重置为原始状态。