Posted at

stub, mocksでインスタンスメソッドの返り値を指定しようとしたときにハマった話

More than 3 years have passed since last update.


stub, mocksでインスタンスメソッドの返り値を指定しようとしたときにハマった話。

Object.stub(:method).and_return(return value)で

depricate warningがでる。

ここ見る(mocksを使えばいい)

http://qiita.com/runamoon@github/items/1113656a02c0552cbba1

mocksがわからないのでここ見る(rspec-mocksのレポジトリ)

https://github.com/rspec/rspec-mocks

doubleが何なのかわからない

次にここ見る(テストdoubleについての説明)

http://web-k.github.io/blog/2012/10/02/rspec-mock/

まとめるとdoubleとはダミーオブジェクトを作成するもの。なんでdoubleという命名かはあまりわからない。

自分のよう”後からテストを書く人間”にとっては無関係。

そんな怠惰な人間にとって必要なのは、

allow(Object).to receive(:method) {return value}

ではなく、

allow_any_instance_of(Object).to reveive(:method) {return value}

だった。

ダミーオブジェクトでもないObjectに前者の記述をしたところで無視されてハマっていた。