2012-08-02 27 views
1

我一直在研究Ruby on Rails教程。我遇到了一個問題,a test通過檢查批量指派安全異常將被拋出。我不知道爲什麼我會得到這個測試失敗,或者如何解決這個問題。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)> 

回答

1

嘗試使用to,而不是should您期望raise_error匹配。

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 
+0

它的工作原理!我最好向Rails教程的製作者提交錯誤報告 – 2012-08-02 15:24:09