Как сказать gmock игнорировать любые другие вызовы методов - PullRequest
1 голос
/ 18 апреля 2019

взгляните на код ниже

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 Ответ

1 голос
/ 19 апреля 2019

Можно также указать, что он будет вызываться с любым параметром любое количество раз:

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

Обратите внимание, что порядок ожиданий важен, так как самые последние ожидания имеют приоритет.Если вы поставите их наоборот, совпадение "_" будет соответствовать всему, и совпадение "4" никогда не будет удовлетворено.

...