googlemock matcher для выходных параметров - PullRequest
3 голосов
/ 22 февраля 2012

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

// mListener is a mocked object
// This expectation accepts any argument
EXPECT_CALL(this->mListener, OnChanged(_))
    .Times(1);

Это нормально, но я также хочу проверить аргумент.Это объект, у которого есть только методы доступа, использующие выходные параметры:

// aValue is an output parameter
HRESULT get_Value(int* aValue);

Как определить сопоставитель, который будет проверять значение, которое get_Value помещает в aValue?

1 Ответ

3 голосов
/ 23 февраля 2012

Вы можете попробовать что-то вроде:

MATCHER_P(CheckValue,
          expected_value,
          std::string("get_Value ")
              + (negation ? "yields " : "doesn't yield ")
              + PrintToString(expected_value)
              + " as expected.") {
  int result;
  arg.get_Value(&result);
  return expected_value == result;
}

который может это проверить, например aValue == 7, выполнив:

EXPECT_CALL(this->mListener, OnChanged(CheckValue(7)))
    .Times(1);
...