前几次我运行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
答案 0 :(得分:0)
你认为唯一性是衡量正在发生的事情的一个很好的指标是正确的。可能您的测试数据库在上次运行测试时有一些剩余记录,并且正在尝试使用相同的工厂创建记录。
为此,有几种方法可以在测试套件的运行之间清理数据库。有时在运行测试套件之前运行bundle exec rake db:test:prepare
会很有帮助。在其他情况下,您可以使用数据库清理程序gem https://github.com/DatabaseCleaner/database_cleaner