用于输出参数的googlemock匹配器

时间:2012-02-22 18:45:42

标签: matcher googlemock output-parameter

我正在测试我的类是否使用正确的参数调用模拟类上的方法。我已经建立了一个基本的期望:

// 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 个答案:

答案 0 :(得分:3)

您可以尝试以下方式:

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);