如何在Rspec和Rails 4中测试质量分配错误?

时间:2013-12-07 13:02:48

标签: ruby-on-rails ruby rspec ruby-on-rails-4

我最近将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的强参数

我现在如何测试质量分配错误?

感谢您的帮助。

2 个答案:

答案 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/