web-dev-qa-db-ja.com

Googleモックでモックオブジェクトに例外をスローさせる方法は?

Google Mock 1.7.0では、メソッドを持つモックオブジェクトがあり、それが呼び出されることを期待したいのですが、この場合、モックされたメソッドは例外をスローする必要があります。

ObjectMock object_mock_;
EXPECT_CALL(object_mock_, method())
  .Times(1)
  .WillRepeatedly(???);

例外をスローするGoogleモックアクションはありますか?私はそれをドキュメントで見つけませんでした、それでも私は誰もそれを今のところ必要としていないと思います。

ありがとう!

16
user1735594

例外をスローする簡単なアクションを書くだけです。

_ACTION(MyThrowException)
{
    throw MyException();
}
_

そして、標準的なアクションと同じように使用します。

_ObjectMock object_mock_;
EXPECT_CALL(object_mock_, method())
  .Times(1)
  .WillRepeatedly(MyThrowException());
_

Googlemockの標準アクション Throw() もあります。これは、実行されたアクションとして例外をスローすることをサポートします(これを機能させるには、MyExceptionがコピー可能なクラスである必要があることに注意してください!):

_ObjectMock object_mock_;
EXPECT_CALL(object_mock_, method())
  .Times(1)
  .WillRepeatedly(Throw(MyException()));
_

GoogleMock CookBook で、ACTIONおよびパラメーター化された_ACTION_P<n>_定義の完全なドキュメントを検索します。

13

この構文はThrow(exception)です。ここで、例外はコピー可能な値です。

ObjectMock object_mock_;
EXPECT_CALL(object_mock_, method())
  .Times(1)
  .WillRepeatedly(Throw(exception));