SomeClass.any_instance.stub(:some_method).ordered => NG
RSpec MockのSomeClass.any_instance.stub(:some_method)したものには、orderedメソッドがないのですね。知らなかった。
あるモデルをsave!したあとに処理していることをチェックしたかったので、
SomeModel.any_instance.stub(:save!).ordered => 例外発生
で気が付きました。
仕方がないので、処理を呼び出した時のデータベース値をチェックして、データベースの更新後かどうかをチェックすることにしました。
it "..." do OtherModel.should_receive(:other_method).once do |some_record| some_record.reload expect(some_record.field).to eq(expected) end (ここでOtherModel.other_methodを呼び出すなんらかの処理) end
まぁ、本来、確認したかったことをspecに実装しているのでヨシッ!とします。
RSpecは奥が深いですね〜。
--- PR広告
記事を読んでくださり、ありがとうございます。
もしよろしければ、この記事の著者が提供している無料のサービス「かくってる?」をお試しください。
- かくってる?: http://cocktailq.herokuapp.com/