web-dev-qa-db-ja.com

gmock設定のデフォルトアクション/ ON_CALLとEXPECT_CALL

ON_CALLとEXPECT_CALLを使用してデフォルトのアクションを指定するときの違いがわかりません。

これまでのところ、モックのデフォルトアクションを調整する方法は2つあります。

ON_CALL(mock, methodX(_)).WillByDefault(Return(0x01));

または

EXPECT_CALL(mock, methodX(_)).WillRepeatedly(Return(0x01));

誰かが私に説明できますか:

  • 2つの方法の違い
  • それぞれの浮き沈み
  • それらを使用するのが適切な場合(どのようなセットアップ...)
44
Nicoretti
_ON_CALL(mock, methodX(_)).WillByDefault(Return(0x01));
EXPECT_CALL(mock, methodX(_)).WillRepeatedly(Return(0x01));
_

あなたが言ったように、これらの2行はまったく同じことをしているので、まったく違いはありません。いずれかの方法を使用して、必要に応じてデフォルトのアクションを設定します。

ただし、論理的な違いがあります。

  • ON_CALL(mock, methodX(_)).WillByDefault(Return(0x01));は、メソッドが呼び出される可能性があることを意味し、その場合、すべての呼び出しは0x01を返します
  • EXPECT_CALL(mock, methodX(_)).WillRepeatedly(Return(0x01));は、メソッドが呼び出されることが期待され、すべての呼び出しが0x01を返すことを意味します

ところで、チートシートには デフォルトアクションの設定 があります。

特定のメソッドのデフォルトアクションをカスタマイズするには、ON_CALL()を使用します。

_ON_CALL(mock_object, method(matchers))
    .With(multi_argument_matcher)  ?
    .WillByDefault(action);
_
10
BЈовић