コンストラクターが別の関数を呼び出すクラスがある場合、それが呼び出されたことと正しい回数を確認するにはどうすればよいですか?
class MyClass
def initialize(count)
count.times{self.do_something}
end
def do_something
# whatever
end
end
みたいなこと言いたい
n = 4
MyClass.new(n).should_receive(:do_something).exactly(n).times
n = 2
MyClass.new(n).should_receive(:do_something).exactly(n).times
しかし、do_something の呼び出しが should_receive がアタッチされる前に発生するため、これは失敗します (少なくとも、それが理由だと思います)。
expected: 4 times with any arguments
received: 0 times with any arguments
それとも、コンストラクターからこのようなものを呼び出すのは間違っているので、リファクタリングする必要がありますか?
また、この質問は次の質問と非常によく似ています。
rspec:コンストラクターによって呼び出されるインスタンスメソッドをスタブする方法は?
しかし、過去 5 年間で、スタブ化された呼び出しを手動で実装するよりも、答えが改善されたことを願っていnew
ます。