使用 FactoryGirl 创建的记录在控制器中不可用



我的一个测试开始失败。 它以前有效,并且在浏览器中手动执行相同的操作表明该功能正常工作。

我像这样创建要测试的记录:

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

为了进行调查,我添加了一个

binding.pry 

呼叫我的控制器。 该操作将搜索用户。

如果我这样做:

User.all

在撬动提示符下,不显示任何用户,结果为空。

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

可能是什么原因造成的?

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

最新更新