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?

Était-ce utile?

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
scroll top