0

コントローラーのアクション仕様に追加しようとassignsしましたupdate

it "update the content" do
  Answer.should_receive(:find).with(answer.id.to_s).and_return(answer)
  answer.should_receive(:update_attributes).with("content" => "Changed content")

  put :update, id: answer.id, app_id: app.id, answer: {content: "Changed content"}

  assigns(:answer).content.should eq('Changed content') # explicitly permitted
  response.status.should eq 406
end

しかし、私はエラーが発生します:

 Failure/Error: assigns(:answer).content.should eq('Changed content') # explicitly permitted

   expected: "Changed content"
        got: "base content"

   (compared using ==)

しかし、私がコメントするとき:

#answer.should_receive(:update_attributes).with("content" => "Changed content")

スペックパス。なんで?

4

1 に答える 1

5

かなり論理的です。

あなたがするとき:

answer.should_receive(:update_attributes).with("content" => "Changed content")

update_attributes解雇されません。

and_call_originalメソッドを起動するために使用できます。ドキュメントを参照してください

于 2013-03-20T13:35:47.417 に答える