Help us understand the problem. What is going on with this article?

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

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away