尽管存在关系,但对accept_nested_attributes_for的Rspec + shoulda测试失败

时间:2016-06-30 19:38:47

标签: ruby-on-rails rspec shoulda

我正在为我的应用模型编写模型测试,accepts_nested_attributes_for(:user)。这是测试失败的原因:

describe UserApplication, "associations" do
  it { should belong_to(:user) }
  it { should accept_nested_attributes_for(:user) }
end

以下是模特:

class UserApplication < ActiveRecord::Base
   #attr_accessible all the fields

   belongs_to :user
   accepts_nested_attributes_for :user
end

我使用rspec和shoulda-matchers 2.8,从我的研究中,这一切都应该可以正常工作。没有春天或任何其他古怪。这是我看到的错误:

1) UserApplication association 
 Failure/Error: it { should accept_nested_attributes_for(:user) }
 NoMethodError:
   undefined method `accept_nested_attributes_for' for #<RSpec::Core::ExampleGroup::Nested_2:0x007fec5c641a40>
 # ./spec/models/user_application_spec.rb:25:in `block (2 levels) in <top (required)>'

我不确定是什么原因引起的。这可能是一些奇怪的宝石冲突恶作剧还是我错过了一些明显的东西?

1 个答案:

答案 0 :(得分:0)

好的,所以我必须赞扬@PeterAlfvin为我提供工具来查看错误。我的gemfile指定为gem 'shoulda-matchers'但是只加载版本1.0,它不支持accepts_nested_attributes_for。他的建议,通过https://stackoverflow.com/a/2954632/1008891指出了我正确的方向。指定2.8.0修复了问题而没有立即破坏任何东西。