Pregunta

Estoy probando si mi clase llama a un método en una clase burlada, con el argumento adecuado. He configurado una expectativa básica:

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

Esto está bien, pero también quiero verificar el argumento. Es un objeto que solo tiene accesorios que usan parámetros de salida:

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

¿Cómo puedo definir un combate que inspeccione el valor que get_Value poner en aValue?

¿Fue útil?

Solución

Podrías probar algo como:

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

que podría comprobar que EG aValue == 7 haciendo:

EXPECT_CALL(this->mListener, OnChanged(CheckValue(7)))
    .Times(1);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top