【问题标题】:RSpec integration testing -- instance variable in application controller is nilRSpec 集成测试——应用程序控制器中的实例变量为零
【发布时间】:2021-11-25 07:45:19
【问题描述】:

最近开始了一份新工作,在这次演出之前没有 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

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

【问题讨论】:

标签: ruby-on-rails ruby rspec capybara


【解决方案1】:

错误消息告诉您@test 为 nil,这意味着您的数据库不包含 id 为 1 的用户。通常在每个测试之间重置测试数据,以便测试隔离和顺序独立。因此,您需要查看如何通过夹具(如 @arieljuod 提到的那样)或通过使用 FactoryBot 之类的工厂设置测试数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多