NoMethodError尝试访问fixture



我正在将项目的测试套件迁移到rspec。我在尝试访问我的固定装置时遇到以下错误:

nil:NilClass 的未定义方法"[]"

以下是一个示例规范文件:

require 'rails_helper'
feature "edit contacts" do
  fixtures :contacts
  before(:all) do
    @thing = contacts(:two)
  end
  scenario "do a thing" do
    visit new_contact_path
  end
end

在调用contacts(:two) 时,我在before块中得到错误

这是rails_helper.rb 的配置信息

RSpec.configure do |config|
  config.infer_spec_type_from_file_location!
  config.fixture_path = "#{::Rails.root}/spec/fixtures"
end

以下是来自Gemfile.lock:的版本信息

rails (4.0.13)
rspec-core (3.2.2)
rspec-expectations (3.2.0)
rspec-mocks (3.2.1)
rspec-rails (3.2.1)
rspec-support (3.2.2)

如果需要,我很乐意提供任何额外的支持信息。谢谢你的帮忙!

ok-在同事的帮助下终于解决了这个问题。问题是我应该使用before(:each)而不是before(:all)

显然,使用:each会在ActiveRecord::FixtureSet中触发一个'before_setup'回调,该回调设置了所有的fixture,而:all不会。

根据文件:

before(:each)块在每个示例之前运行before

最新更新