受保护属性Rails的单元测试

时间:2012-03-27 18:16:40

标签: ruby-on-rails unit-testing model

我正在使用Rails 3.2.2。我有一个名为user的设计模型。

在我的用户模型中,我设置了:

attr_protected :is_admin

(is_admin是一个布尔属性)

为了测试我做的这个属性:

test "should not be able to change to admin" do
    user = User.create(:name => "Joaquim", :email => "example@test.com", :password => "123456", :is_admin => true)

    assert user.errors.get(:is_admin), "Cant change admin configuration"
end

当我运行此测试时出现错误:

  1) Error:
test_should_not_be_able_to_change_to_admin(UserTest):
ActiveModel::MassAssignmentSecurity::Error: Can't mass-assign protected attributes: is_admin
    test/unit/user_test.rb:44:in `test_should_not_be_able_to_change_to_admin'

我必须使用什么断言进行此测试?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用

assert_raise(ExceptionClass) { .... }

在rspec中你做

expect  { ... }.to raise_error(ExceptionClass)