私は主にスキャフォールドで生成された RSpec 仕様を使用していますが、これは失敗していますが、そうすべきではありません。仕様は次のとおりです。
describe "PUT update" do
describe "with valid params" do
it "updates the requested invoice" do
invoice = Invoice.create!
Invoice.any_instance.should_receive(:update_attributes).with({"number" => "MyString" })
put :update, {:id => invoice.id, :invoice => { "number" => "MyString" }}
end
仕様が実行されると、データベースに 1 つの請求書が作成され、適切に更新されます。ただし、次のメッセージが表示され、失敗します。
RSpec::Mocks::MockExpectationError: (#<Mocha::ClassMethods::AnyInstance:0x653a9a8>).update_attributes({"number"=>"MyString"})
expected: 1 time with arguments: ({"number"=>"MyString"})
received: 0 times with arguments: ({"number"=>"MyString"})
なぜこれが失敗するのですか?