3

私はこのようなことをしたい:

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

実際に状態を変更するオーバーヘッドなしで、相互作用を検証したり、他の仕様で state_machine を使用したりできるように...

どうすればこれを達成できますか?

4

1 に答える 1

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)
于 2012-08-16T22:41:36.543 に答える