Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 试图访问夹具的NoMethodError_Ruby On Rails_Ruby On Rails 4_Rspec_Rspec Rails_Fixtures - Fatal编程技术网

Ruby on rails 试图访问夹具的NoMethodError

Ruby on rails 试图访问夹具的NoMethodError,ruby-on-rails,ruby-on-rails-4,rspec,rspec-rails,fixtures,Ruby On Rails,Ruby On Rails 4,Rspec,Rspec Rails,Fixtures,我正在将项目的测试套件迁移到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_

我正在将项目的测试套件迁移到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
我在before块中得到错误,在呼叫contacts:two时

下面是rails\u 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)

如果需要,我很乐意提供任何额外的支持信息。感谢您的关注,感谢您的帮助

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

显然,使用:each会在ActiveRecord::FixtureSet中触发一个“before_setup”回调,该回调设置了所有装置,而:all则不会

根据报告:

before:每个块在每个示例之前运行before:所有块在组中所有示例之前运行一次

YAML.loadFile.readRails.root.join'spec'、'fixtures.yml'是否返回有效的YAML内容?有点像大杂烩