iOS Mocking-Klasse mit Nebeneffekten beim Laden von Klassen

9

Wir versuchen, einen Einheitentest zu erstellen (mit OCMock, obwohl er für andere Frameworks offen ist), der eine Klasse verspottet, die bei Klassenlast einen Nebeneffekt hat.

Wir haben eine Tracking-Klasse, die Aufrufe an andere Tracking-Bibliotheken wie Flurry umschließt.

Viele dieser anderen Tracking-Bibliotheken (insbesondere Flurry) führen bei der Klasseninitialisierung Code aus.

Der Komponententest schlägt fehl, da der Code in einer Komponententestumgebung nicht ausgeführt werden kann. Im Idealfall möchten wir die Flurry-Klasse durch einen Mock / Stub ersetzen.

%Vor%

Wenn dieser Code aufgerufen wird, versucht er, SCNetworkReachability zu verwenden und erhält exceptions ...

Wie können wir Stub / Mock Aufrufe an Flurry mit einer statischen Implementierung wie der folgenden ausführen?

%Vor%     
Gary Rudolph 05.02.2014, 19:52
quelle

1 Antwort

3

Ich würde Flurry aus der Build-Konfiguration entfernen, die ich für den Test verwende (entferne es aus dem Suchpfad / Bibliothekssuchpfad von Framework Search). Ich würde meinen eigenen Dummy Flurry erstellen, indem ich die Flurry-Header-Datei ergreife und meine eigene Implementierung mit leeren Methoden erstelle. Schließlich, wenn es mich interessiert, dass Flurry aufgerufen wird, würde ich OCMock verwenden, um meine falsche Klasse zu verspotten.

    
Ben Flynn 06.02.2014 16:23
quelle