我最近将Rails应用程序从Rails 3升级到4,并且此Rspec测试不再通过:
# spec/models/user_spec.rb:
require 'spec_helper'
describe User do
it "should not allow access to admin" do
expect do
User.new(:admin => true)
end.to raise_error(ActiveModel::MassAssignmentSecurity::Error)
end
end
我收到此错误:
Failure/Error: end.to raise_error(ActiveModel::MassAssignmentSecurity::Error)
NameError: uninitialized constant ActiveModel::MassAssignmentSecurity
我怀疑这是由于切换到Rails 4的强参数。
我现在如何测试质量分配错误?
感谢您的帮助。
答案 0 :(得分:3)
正如Baldrick正确地指出,Rails 4中没有必要在Rspec模型测试中测试质量分配问题。 Rails 4 Strong Parameters的整个想法是将所有功能都移到控制器上。
答案 1 :(得分:2)
要使测试通过,您需要添加config.active_record.mass_assignment_sanitizer =:strict to
config / aplication.rb并将gem https://github.com/rails/protected_attributes添加到Gemfile。
如果您想要测试强参数,请阅读本文http://pivotallabs.com/rails-4-testing-strong-parameters/