最近开始了一份新工作,在此之前没有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,这意味着您的DB不包含id为1的User。通常在每次测试之间重置测试数据,因此测试是隔离的和顺序无关的。因此,您需要查看如何通过fixture(如@arieljuod所提到的)或通过工厂(如FactoryBot)设置测试数据。