1

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

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

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

有什么想法可以解决这个问题吗?注意,我最近安装了cancan gem,也许它与它有关?

4

2 回答 2

2

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

如果您的测试数据库没有被正确清理,那么我建议使用database_cleaner.

于 2012-05-06T01:15:09.450 回答
0

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

于 2012-05-06T06:09:37.030 回答