我想做这样的事情:
@vehicle.should_receive(:park)
@vehicle.stub!(:park)
Vehicle.any_instance.stub(:park)
# etc.
这样我就可以验证交互或在其他规范中使用state_machine,而无需实际更改状态的开销......
我怎么能做到这一点?
答案 0 :(得分:0)
使用您撰写的上述任何方法。请注意,我认为在某些版本的Rspec中,直接存根或使用#should_receive将替换所述存根方法的主体。如果您以后测试副作用,它们将不会出现。
通常我会解决这个问题。
@vehicle.should_receive(:park) do
@vehicle.state = :parked
end
expect do
@person.exit_vehicle
end.should change(@vehicle.state).from(:driving).to(:parked)