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

问题描述 投票:1回答:1

看看下面的代码

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

我希望这个测试能够通过,因为如果它们与ecpect_call不匹配,我对其他exMethod调用不感兴趣。如何告诉gmock忽略任何与期望不符的调用?

googletest gmock
1个回答
1
投票

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

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

请注意,期望的顺序很重要,因为最近的期望是优先考虑的。如果你把它们放在“_”的另一边,匹配器会匹配所有东西而且“4”匹配器永远不会满足。

© www.soinside.com 2019 - 2024. All rights reserved.