2017-09-01 2 views
0

Ich bin ein GMOCK Testfälle für eine Klasse zu schreiben:GMOCK - verspotten ein Objekt und sein Inneres Mock Methode

class A{ .. void Text() .. }; 

nun eines der Member-Methode der Klasse A hat sich in sie ein Klasse-B-Typ-Objekt eingebettet und bezieht sich auch auf statische Member-Methoden:

In so einem Fall wie kann ich B und seine Methoden spotten?

Antwort

0

Anstatt A zu testen, können Sie eine daraus abgeleitete Klasse testen, nennen wir sie TestableA. In A machen Sie virtual und in Override verwenden Sie Mock der B. Werfen Sie auch einen Blick auf this question für weitere Ideen, wie Klassen mit statischen Methoden gespottet werden können.

Dennoch wäre die beste Lösung bestehende enge Abhängigkeit zwischen A und B durch die Einführung eine Schnittstelle (z InterfaceB) und in Text() Injektion zu brechen sein. SMethod() würde ein (nicht statisches) Mitglied der Schnittstelle werden. In der Produktion würden Sie injizieren ActualB wo ActualB::SMethod() Anrufe staticB::SMethod(). In Tests würden Sie MockB::SMethod() verwenden, zugeschnitten auf die Testanforderungen.

Verwandte Themen