2017-05-08 2 views
0

Während eines XCTestCase möchte ich irgendwie sagen "Internet deaktivieren" und es wäre effektiv deaktiviert. Dann würde ich später irgendwie "Internet aktivieren" sagen und es würde zurückkommen. Der Punkt ist, dass meine App sich ordnungsgemäß verhält, wenn Netzwerkanforderungen fehlschlagen und später erfolgreich sind. Was ist der beste Weg, dies zu tun?Internet Verfügbarkeit während XCTestCase umschalten

Das Ein- und Ausschalten des Flugmodus kann ausreichend sein, aber ich weiß nicht, wie ich das machen soll. Ich habe darüber nachgedacht, einen dedizierten Simulator zu erstellen, der so vorkonfiguriert ist, dass das Internet deaktiviert ist, z. B. wenn der Flugzeugmodus aktiviert ist, aber das würde meine Fähigkeit einschränken, diesen Test auf einen vorkonfigurierten Simulator und nicht auf den Simulator (oder das Gerät) auszuführen) meiner Wahl.

+0

Welche Bibliothek verwenden Sie als Netzwerk-Framework? –

+0

@GrzegorzKrukowski Stiftung. Ich verwende NSURLSession direkt mit einer NSURLSessionDataTask. –

Antwort

0

Da Sie NSURLSession direkt verwenden, besteht die am wenigsten invasive Lösung darin, die HTTP- und HTTPS-Protokolle zu übernehmen, damit Sie den Erfolg und Inhalt von URL-Anfragen steuern können.

Es gibt Bibliotheken dafür, aber viele konzentrieren sich möglicherweise mehr auf die Kontrolle des Antwortinhalts als auf das Blackholing einer Anfrage, indem sie nicht reagieren oder die Antwort verzögern.

Im Allgemeinen erhalten Sie eine bessere Faktorisierung und eine nähere, einfachere Naht, wenn Sie das Netzwerk auf die andere Seite eines von Ihnen gesteuerten Protokolls drücken und beim Testen eine andere Implementierung bereitstellen können.