In früheren Versionen von Google Mock können Sie nur virtuelle Funktionen mocksen, siehe documentation auf der Projektseite.
Neuere Versionen erlaubt, non-virtual methods zu verspotten, mit dem, was sie hi-Perf Abhängigkeitsinjektion.
Wie congusbongus
heißt es:
Google Mock setzt Membervariablen auf Hinzufügen Methode spöttisch zu unterstützen, und da Sie nicht Vorlage Membervariablen erstellen können, ist es unmöglich, Mock Template-Funktionen
A Workaround, von Michael Harrington in den googlegroups-Link aus den Kommentaren, ist die Template-Methoden spezialisiert, die eine normale Funktion aufrufen, die verspottet werden kann. Es löst nicht den allgemeinen Fall, aber es wird zum Testen funktionieren.
struct Foo
{
MOCK_METHOD1(GetValueString, void(std::string& value));
template <typename ValueType>
void GetValue(ValueType& value);
template <>
void GetValue(std::string& value) {
GetValueString(value);
}
};
leider nicht hilfreich sein, aber ich bin die einzige, der, wenn er Fragen wie diese sieht, hat den ersten Instinkt „Du bist eine dumme Vorlage zu beantworten! Und deine Mutter gekleidet Sie lustig! Wer verwenden könnte eine so dumme, dumme Vorlage? " –
Danke für Ihren Kommentar Brian ... Der Quellcode, den Sie sehen, ist ein Teil einer größeren Klasse. Diese Vorlage ist nicht so dumm, wie es aussieht ... –
http://www.merriam-webster.com/dictionary/mock: mit Verachtung oder Spott zu behandeln –