Je teste un appel asynchronous en utilisant XCTestExpectation.
Le code suivant fonctionne (le test réussit) lorsque le completionHandler est exécuté avant le timeout de 1 seconde donné.
func test__async_call() { // prepare let sut = ClassToTest() let expectation: XCTestExpectation = self.expectationWithDescription(nil) // test sut.methodToTestWithCompletionHandler() { () -> () in expectation.fulfill() } // verify self.waitForExpectationsWithTimeout(1, handler: nil) }
Toutefois, si le completionHandler n'est pas appelé, l'attente n'est pas satisfaite. Au lieu d'get un échec de test lors de l'appel de waitForExpectationsWithTimeout, j'obtiens un EXC_BAD_ACCESS, ce qui n'est pas très pratique car cela empêche de voir tous les résultats de la suite de tests.
Comment puis-je éviter cela et get un échec de test normal?
Semble que ce qui provoque l'EXC_BAD_ACCESS passe une description nulle lors de la création de l'attente.
Passer une string à cet appel la fait fonctionner et nous obtenons l'échec de test attendu lorsque l'attente n'est pas satisfaite.
let expectation: XCTestExpectation = self.expectationWithDescription("...")