1

私は Ruby on Rails チュートリアルに取り組んできました。大量割り当てセキュリティ例外がスローされるかどうかをチェックするテストに合格する際に問題が発生しました。なぜこのテストが失敗するのか、またはそれを修正する方法がわかりません。

rspec:

describe "accessible attributes" do
    it "should not allow access to user_id" do
      expect do
        Micropost.new(user_id: user.id)
      end.should raise_error(ActiveModel::MassAssignmentSecurity::Error)
    end    
  end

失敗:

  1) Micropost accessible attributes should not allow access to user_id
     Failure/Error: expect { Micropost.new(user_id: user.id) }.should raise_error(ActiveModel::MassAssignmentSecurity::Error)
       expected ActiveModel::MassAssignmentSecurity::Error, got #<NoMethodError: undefined method `call' for #<RSpec::Expectations::ExpectationTarget:0x8af2bb8>>
     # ./spec/models/micropost_spec.rb:23:in `block (3 levels) in <top (required)>
4

1 に答える 1

1

期待する raise_error マッチャーtoの代わりに使用してみてください。should

describe "accessible attributes" do
  it "should not allow access to user_id" do
    expect do
      Micropost.new(user_id: user.id)
    end.to raise_error(ActiveModel::MassAssignmentSecurity::Error)
  end    
end
于 2012-08-02T15:21:25.583 に答える