Googlemock Matcher para parámetros de salida
-
29-10-2019 - |
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
?
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