XCTestCase waitForExpectationsWithTimeout: handler: lancer EXC_BAD_ACCESS lorsque l'attente n'est pas satisfaite

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("...")