class A
def process
@b.calculate
end
end
it ‘should change b calculate value’ do
@b.should_receive(:calculate)
@a.process
@b.calculae_value.should == ‘after_calculae’
end
it will fail, if I comment out #@b.should_receive(:calculate), the test
pass,
or if comment out #@b.calculae_value.should == ‘after_calculae’, also
pass.
so my colleague said maybe should_receive break the mehod chain and
return.
thing is really going this way?
On Jul 29, 2010, at 7:46 AM, Zhenning G. wrote:
thing is really going this way?
Your colleague is correct. Any time you use object.stub(:method) or
object.should_receive(:method) on a real object, the method is replaced
by the mock framework. This is true with all of the popular ruby
mock/test double frameworks. The one way to get around that is to use
RR’s[1] proxy.
HTH,
David
[1] GitHub - btakita/rr: RR (Double Ruby) is a test double framework that features a rich selection of double techniques and a terse syntax.