我想这样做:

@vehicle.should_receive(:park)
@vehicle.stub!(:park)
Vehicle.any_instance.stub(:park)
# etc.

这样我就可以验证交互或在其他规范中使用状态机,而不需要实际更改状态的开销…
我怎么能做到这一点?

最佳答案

使用上面提到的任何方法。注意,我认为在rspec的某些版本中,直接截短,或者用应该接收将替换所述截短方法的主体。如果你以后检查副作用,它们就不会出现了。
通常我都和他一起工作。

@vehicle.should_receive(:park) do
   @vehicle.state = :parked
end

expect do
  @person.exit_vehicle
end.should change(@vehicle.state).from(:driving).to(:parked)

关于ruby-on-rails - 您如何 stub /期待state_machine事件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10884213/

10-12 22:42