RSpec 集成测试 -- 应用程序控制器中的实例变量为 nil

RSpec integration testing -- instance variable in application controller is nil

最近开始了一份新工作,在这次演出之前我没有 ruby/rails 经验。

目前我在我的应用程序控制器中定义了一个方法,它定义了一些实例变量,并且正在被调用 :before_action do_something_on_start 有一个实例变量从我们的数据库中获取一个条目,我设置了一些将在视图中可用的实例变量

def do_something_on_start
@test = User.find_by(id: 1)
@enabled = @test.value == "true"
@start_date = @test.start_date
end

当 运行使用我们的测试规范套件时,大多数功能规范都会返回 undefined method `value' for nil:NilClass

不完全确定为什么会这样。实例变量在 运行 时是否不可用于测试规范?或者我是否必须在我们所有的功能规范中定义相同的实例变量才能工作?

错误消息告诉您 @test 为 nil,这意味着您的数据库不包含 ID 为 1 的用户。通常在每次测试之间重置测试数据,以便测试是隔离的并且与顺序无关。因此,您需要查看如何通过固定装置设置测试数据,如@arieljuod 所述,或者通过使用 FactoryBot 之类的工厂。