我正在将项目的测试套件迁移到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