In an RSpec unit test I have a mock defined like this:
let(:point) { instance_double("Point", :to_coords => [3,2]) }
In the Point class I also have a setter, which is used in the class under test (which is called Robot
). I would like to stub that setter to test Robot#move
. Here's the wrong code I have so far:
describe "#move" do
it "sets @x and @y one step forward in the direction the robot is facing" do
point.stub(:coords=).and_return([4,2])
robot.move
expect(robot.position).to eq([4,2])
end
end
Here's the error message I get:
Double "Point (instance)" received unexpected message :stub with (:coords=)
Got it! The correct syntax looks like this:
allow(point).to receive(:coords=).and_return([4,2])
The stub
method is apparently deprecated.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With