不一致的Rails测试结果

时间:2017-11-24 17:02:41

标签: ruby-on-rails rspec

前几次我运行rspec规范,我收到失败,如果我再次运行它,之后,它会通过。为什么会发生这种情况,我该如何解决?

这似乎与唯一性代码有关,以防止添加具有已经存在的名称的记录。以下是第一次一直失败的测试:

it { should validate_uniqueness_of(:name).case_insensitive.with_message(/has already been taken. Please use a different name./) }

完整的回购可以在这里找到:https://github.com/melissajstudent/koth

1 个答案:

答案 0 :(得分:0)

你认为唯一性是衡量正在发生的事情的一个很好的指标是正确的。可能您的测试数据库在上次运行测试时有一些剩余记录,并且正在尝试使用相同的工厂创建记录。

为此,有几种方法可以在测试套件的运行之间清理数据库。有时在运行测试套件之前运行bundle exec rake db:test:prepare会很有帮助。在其他情况下,您可以使用数据库清理程序gem https://github.com/DatabaseCleaner/database_cleaner

在整个运行期间实现更强大的数据库清理