オブジェクトが特定のケースで最適化を使用しているかどうかをテストしたいと思います。だから私はこの種のコードを持っています
class Bar
attr_reader :n
def initialize(n)
@n=n
end
def a
if @n <= 3
b1
else
b2
end
end
def b1
@n+=1
end
def b2
@n+=1 ##super fast addition
end
end
私はそのようなrspecを書いてみます
bar=Bar.new(5)
allow(bar).to receive(:b2).and_call_original
bar.a
expect(bar).to receive(:b2).once
expect(bar.n).to eq 6
しかし、それは機能しません...それが可能か知っていますか? はいの場合、どのように?