私はこのようなことをしたい:
@vehicle.should_receive(:park)
@vehicle.stub!(:park)
Vehicle.any_instance.stub(:park)
# etc.
実際に状態を変更するオーバーヘッドなしで、相互作用を検証したり、他の仕様で state_machine を使用したりできるように...
どうすればこれを達成できますか?
私はこのようなことをしたい:
@vehicle.should_receive(:park)
@vehicle.stub!(:park)
Vehicle.any_instance.stub(:park)
# etc.
実際に状態を変更するオーバーヘッドなしで、相互作用を検証したり、他の仕様で state_machine を使用したりできるように...
どうすればこれを達成できますか?
あなたが書いた上記の方法のいずれかを使用してください。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)