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に前者の記述をしたところで無視されてハマっていた。