Wie testen Sie eine sendAsynchronousRequest: auf XCTest
Sorry für die noob-Frage, aber ich versuche es zu testen, eine Verbindung, aber ich bin nicht in der Lage, überprüfen Sie die Rückgabe der Anfrage, da der test endet vor dem Abschluss-handler eine chance haben, zu führen. Zu ilustrate:
-(void)testConnection
{
[[Conector sharedInstance] performAsynchronousRequestWithServerRequest:_srvRequest completionHandler:^(RequestAsynchronousStatus finishStatus, NSData *data) {
if (finishStatus == RequestAsynchronousOK){
_data = data;
NSLog(@"Data OK");
}
}];
XCTAssertNotNil(_data, @"Data was nil");
}
Wenn ich versuche zu behaupten, _data immer null, da der Abschluss-handler nicht ausgeführt noch. Es ist ein Mechanismus zu zwingen, den test zu warten, bis ich die Reaktion von der sendAsynchronousRequest: Methode.
Vielen Dank im Voraus.
InformationsquelleAutor André Henrique | 2013-10-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese genau aussieht, was Sie brauchen:
XCAsyncTestCase: Asynchron fähige SenTestCase Unterklasse.
Grundsätzlich sollten Sie schreiben Sie Ihre Prüfung wie folgt:
Beachten Sie die
waitForTimeout:
nennen und dienotify:
Anrufe. 10 Sekunden sollte genug sein für den test, aber es würde davon abhängen, den Antrag selbst.Könnten Sie sogar noch weiter und warten, für einen bestimmten status, etwa so:
Diese Weise, wenn die Verbindung fehlschlägt, Benachrichtigen Sie den
XCTAsyncTestCaseStatusSucceeded
status, die warten, Anruf abgewiesen wird und Ihr test ausfallen würde (wie es sollte).Es könnte nützlich sein, zu wissen, dass eines der bekannten Probleme erwähnt, die in der XCAsyncTestCase readme-Datei ist, dass "tests hängen, wenn die Ausführung unter XCode build-bots". Wenn Sie also mit bots bauen, könnte man auf
xctest-additions
von iheartradio.InformationsquelleAutor Ian
Hier ist eine weitere alternative, XCAsyncTestCase basierend auf der GHUnit version:
https://github.com/iheartradio/xctest-additions
Verwendung ist die gleiche, nur import-und Unterklasse XCAsyncTestCase.
InformationsquelleAutor Sveinung Kval Bakken
Dies ist nun in XCode 6:
Obj-C Beispiel hier:
XCTest und asynchrone Tests in Xcode 6
InformationsquelleAutor jonbauer