4
User.should_receive(:update_attributes).with({'these' => 'params'})

その声明はどういう意味ですか?these何かを意味するものとしてどこにもインスタンス化されていません。

ステートメント全体は次のとおりです。

  describe "with valid params" do
    it "updates the requested user" do
      User.should_receive(:find).with("37") { mock_user }
      User.should_receive(:update_attributes).with({'these' => 'params'})
      put :update, :id => "37", :user => {'these' => 'params'}
    end

エラーが発生したため、これを言います:

unknown attribute: these

これは、前述のシナリオから来ています..

4

2 に答える 2

3

これは、実行中のテスト中にの引数を使用して、モデルでメソッドupdate_attributesを呼び出す必要があることを示しています。User{'these' => 'params'}

基本的に、実行中に次のことが予想されます。

User.update_attributes({'these' => 'params'})

詳細はこちら: http: //rspec.info/documentation/mocks/message_expectations.html

于 2010-09-09T00:23:31.837 に答える
0

ハッシュを置き換える必要はありません ({'these' => 'params'})。契約と考えてください。PUT すると、オブジェクトの update_attributes モデルが次のハッシュを受け取る必要があると言いました。次の行で update メソッドを呼び出し、コントラクトがチェックされます。

于 2012-06-11T10:17:22.157 に答える