Ruby on Rails - 了解测试中的数据库依赖关系

问题描述

我有一些模型代码,可以使用简单的 find() 调用数据库

@thing = Thing.find(id)

我在数据库中为测试环境植入了数据。如果我在测试 (rails c -e test) 中打开控制台,我可以运行 Thing.find(1) 并得到很好的结果,但是当我运行调用上述方法的测试时,它报告找不到记录id 为 1

我认为我误解了测试种子数据与针对该数据库运行的测试之间的关系。为什么我在测试数据库中看到种子,而测试却没有?

解决方法

一种更传统的方法是创建装置(或工厂,如果使用 FactoryBot)并在您的测试设置中调用这些工厂。正如之前的回答所说,由于自动递增,硬编码测试 ID 可能会返回 RecordNotFound

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...