googlemock matcher pour les paramètres de sortie
-
29-10-2019 - |
Question
Je suis en train de tester si ma classe appelle une méthode sur un moqué de classe, avec le bon argument.J'ai mis en place une base de l'attente:
// mListener is a mocked object
// This expectation accepts any argument
EXPECT_CALL(this->mListener, OnChanged(_))
.Times(1);
C'est très bien, mais je veux aussi de vérifier l'argument.C'est un objet qui n'a de accesseurs qui utilisent des paramètres de sortie:
// aValue is an output parameter
HRESULT get_Value(int* aValue);
Comment puis-je définir un comparateur qui va inspecter la valeur que get_Value
met en aValue
?
La solution
Vous pouvez essayer quelque chose comme:
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;
}
qui a pu vérifier que, par exemple, aValue == 7
en faisant:
EXPECT_CALL(this->mListener, OnChanged(CheckValue(7)))
.Times(1);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow