Ich habe eine Klasse, die einen Booleschen als Bezugsgröße nimmt und gibt eine ganze Zahl:Google Mock ByRef Methode
class Foo
{
public:
Bar my_bar;
virtual int myMethod(bool &my_boolean) = 0;
}
/*...*/
int Foo::myMethod(bool &my_boolean){
if (my_bar == NULL){
my_boolean = false;
return -1;
}
else{
my_boolean = true;
return 0;
}
}
Und habe ich ein Mock für diese Klasse:
class MockFoo : public Foo
{
MOCK_METHOD1(myMethod,int(bool &my_boolean));
}
Ich bin Probleme bei der Festlegung der Erwartungen für diese Art von Funktion haben, weil ich den Referenzwert und den Referenzparameter auf bestimmte Werte festlegen muss, um meine Komponententests richtig zu erstellen. Wie kann ich mit gmock diese Art von Funktion umgehen? Ich habe versucht, dem zu folgen, was ich dachte als die Lösung auf der Dokumentation:
using ::testing::SetArgPointee;
class MockMutator : public Mutator {
public:
MOCK_METHOD2(Mutate, void(bool mutate, int* value));
...
};
...
MockMutator mutator;
EXPECT_CALL(mutator, Mutate(true, _))
.WillOnce(SetArgPointee<1>(5));
Aber entweder ich habe nicht das Beispiel, oder es war nicht für dieses case.Has jemand behandelt verstanden whith diese Art von Situation vor?
Vielen Dank im Voraus.
Dann bekomme ich nicht, was ist deine Frage. Können Sie Ihre Probleme ausarbeiten? Der Code scheint für mich korrekt zu sein. Oder möchten Sie wissen, wie Sie die Erwartungswerte für den Referenzparameter analog setzen? 'ByRef()' wäre dafür völlig in Ordnung. –
+1, das ist schwer zu bekommen aus den Beispielen des Kochbuchs. –