2016-05-31 23 views
2

Ich schreibe eine App, die Funktionen getrennt hat, wenn online und offline. In diesen Funktionen verwende ich Reachability, um die Internetverbindung zu überprüfen und mit jedem Fall (online/offline), es funktioniert anders.XCTestCase mit Internetverbindung Fall

Nun wurde ich aufgefordert, Testfälle für diese Geschäftslogik zu schreiben. Ich habe überall gesucht, aber es scheint, dass sich niemand um den Testfall in iOS kümmert.

Ich möchte Testcase schreiben, die sowohl für online/offline Fall abdecken. Ist es in iOS möglich? Wenn ja, wie simuliere ich den Status der Internetverbindung?

UPDATE FRAGE:

Ich möchte auch von Online den Fall abzudecken Schaltkehrt offline und umgekehrt. Es sollte eine Möglichkeit geben, diesen Netzwerkverbindungsstatus zu simulieren, oder?

+0

Dies kann hilfreich sein: [? Was ist spöttisch] (http://stackoverflow.com/questions/2665812/what-is-mocking), [OCMock] (http://ocmock.org). – FreeNickname

Antwort

3

Sie sollten mit Rückgabewert OCMock

id reachabilityMock = OCMClassMock([Reachability class]); 
[OCMStub([reachabilityMock currentReachabilityStatus]) andReturnValue:@(ReachableViaWiFi)]; 
[OCMStub([reachabilityMock reachabilityForInternetConnection]) andReturn:reachabilityMock]; 
Reachability *reachability = [Reachability reachabilityForInternetConnection]; 
XCTAssertEqual(reachability.currentReachabilityStatus, ReachableViaWiFi); 

verspotten Erreichbarkeits Dann senden geändert Benachrichtigung manuell.

[[NSNotificationCenter defaultCenter] postNotificationName: kReachabilityChangedNotification object: noteObject]; 
+0

Hallo, Entschuldigung für den späten Kommentar. Ich habe ein statisches Singleton-Objekt, das eine Instanz von "Erreichbarkeit" enthält, um Internet-Änderungen zu überprüfen. Dieses Objekt wird zusammen mit dem Erreichbarkeitsobjekt ** BEFORE ** vor der Testeinrichtung initialisiert, so dass der Schein nicht mit seiner Eigenschaft funktioniert. Wie kann ich das umgehen? – Eddie

+0

Möglicherweise müssen Sie die Methode swizzling verwenden, um vor dem Initialisieren des Singleton zu mocksen. – Bing

+0

Danke, ich melde mich später bei Ihnen, nachdem Sie die Testmethoden getestet haben. Es sieht gut aus. – Eddie