Shoulda-matchers不支持ActiveRecord类的allow_mass_assignment_of。
作为一种解决方法,您会将以下代码视为等效代码吗?
it { should_not allow_mass_assignment_of :id }
it { MyClass.protected_attributes.include?("id").should be_true }
答案 0 :(得分:1)
根据源代码,两者是等价的,但第一行应该正常工作。 您可以在https://github.com/thoughtbot/shoulda-matchers/blob/master/lib/shoulda/matchers/active_model/allow_mass_assignment_of_matcher.rb
上查看答案 1 :(得分:1)
我也遇到了这个问题。以下测试:
it should allow_mass_assignment_of(:email)
失败并显示错误消息
undefined method 'allow_mass_assignment_of' for #<Class:0x1044de9c8> (NoMethodError)
以下测试成功(因此确定了Shoulda存在):
it should validate_uniqueness_of(:email)
shoulda-matcher版本1.0.0,rspec(和所有相关宝石)版本2.8.0
看起来不像,但这可能与此问题有关:https://github.com/mergulhao/shoulda-matchers/commit/3a75c6877c07fbf62e77b1fb0aa852138bd537d6