如何告诉gmock忽略任何其他方法调用

时间:2019-04-18 13:13:42

标签: googletest gmock

看看下面的代码

class ExampleInterface {
public:
   virtual void exMethod(int param)=0;
};

class MyMock : public ExampleInterface {
   MOCK_METHOD1(exMethod, void(int));
};

TEST_F(TestCls, test1){
  MyMock mock;

  EXPECT_CALL(mock, exMethod(4)).Times(1);

  mock.exMethod(4);
  mock.exMethod(5);
}

此测试失败,并显示消息

...Expected: to be called once 
Actual: called once - saturated and active

我希望此测试通过,因为如果其他exMethod调用与ecpect_call不匹配,我对它们不感兴趣。如何告诉gmock忽略所有与期望不符的呼叫?

1 个答案:

答案 0 :(得分:1)

您可以告诉它还希望多次使用任何参数调用它:

EXPECT_CALL(mock, exMethod(_)).Times(AnyNumber());
EXPECT_CALL(mock, exMethod(4)).Times(1);

请注意,期望的顺序很重要,因为最新的期望优先。如果以其他方式将它们放在“ _”匹配器周围,则将匹配所有内容,而“ 4”匹配器将永远不会满足。