我的一项测试已经开始失败。它以前工作并在浏览器中手动执行相同的操作显示该功能正在工作。
我创建了要测试的记录,如下所示:
will = FactoryGirl.create(:user, profile: "security of the internet", first_name: "will")
为了调查,我添加了一个
binding.pry
在我的控制器中打电话。该操作搜索用户。
如果我这样做:
User.all
在pry提示符下,没有显示任何用户,结果为空。
如果我使用pry进入实际测试,User.all会显示预期的记录。
这可能是什么原因?
答案 0 :(得分:0)
通常这是因为您的测试标记为js:true并且正在使用支持JS的驱动程序,但您正在使用事务数据库测试。使用“完整浏览器”驱动程序时,应用程序和测试运行。不同的线程使它们各自拥有自己的数据库连接。这意味着在一个线程事务中创建的对象在提交之前在另一个事务中不可见,但是当使用基于事务的测试时,任何事都不会被提交要修复,请关闭事务测试并对该测试使用截断或删除 - 请参阅database_cleaner