私は rspec を学んでいますが、他のメソッドのチェーンを呼び出すメソッドの仕様を記述する最も効果的な方法を考えています。例えば:
class Example1
def foo(dependency)
dependency.bar("A")
dependency.baz("B")
dependency.bzz("C")
end
end
理想的には、次のような仕様を書きたいと思います。
it "should call bar" do
ex = Example1.new
dep = mock
dep.should_receive(:bar).with("A")
ex.foo(dep)
end
it "should call baz"
...
it "should call bzz"
...
ただし、これを行うと、(当然のことながら)「予期しないメソッド呼び出し baz」などの例外が発生します。
それで、それに対処する最善の方法は何ですか?私はいくつかのアイデアを思いつきましたが、どれが良いかわかりません。
- モックの依存関係を「as_null_object」にして、余分な呼び出しを無視します。(マイナス面-そのオブジェクトで不要なランダムなものを呼び出していた場合、私はそれを知りません)
- 各仕様で使用されていない 2 つの依存関係メソッド呼び出しをスタブ化します (欠点 - 非常に DRY に感じます)
- 3 つすべての依存関係呼び出しを「前」にスタブします (欠点 - 「前」に多くのがらくたを置きます)