使用FactoryGirl创建的记录在Controller中不可用

我的一项测试已经开始失败。 它以前工作并在浏览器中手动执行相同的操作显示该function正在工作。

我创建了要测试的记录,如下所示:

will = FactoryGirl.create(:user, profile: "security of the internet", first_name: "will") 

为了调查,我添加了一个

 binding.pry 

打电话到我的控制器。 该操作搜索用户。

如果我做:

 User.all 

在pry提示符下,没有显示用户,结果为空。

如果我用pry进入实际测试,User.all会显示预期的记录。

可能是什么原因造成的?

通常这是因为您的测试标记为js:true并且正在使用支持JS的驱动程序,但您正在使用事务数据库测试。 使用“完整浏览器”驱动程序时,应用程序和测试运行。 不同的线程使它们各自拥有自己的数据库连接。 这意味着在一个线程事务中创建的对象在提交之前在另一个事务中不可见,但是当使用基于事务的测试时,任何事都不会被提交 要修复,请关闭事务测试并对该测试使用截断或删除 – 请参阅database_cleaner