如何告诉 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 忽略任何不符合预期的调用?

你可以告诉它也期望被任何参数调用任意次数:

EXPECT_CALL(mock, exMethod(_)).Times(AnyNumber());
EXPECT_CALL(mock, exMethod(4)).Times(1);
请注意,期望

的顺序很重要,因为最近的期望优先。如果你把它们放在另一个地方,"_"匹配器将匹配所有内容,而"4"匹配器将永远不会满意。

相关内容

最新更新