I am testing an asynchronous call using XCTestExpectation.
The following code works(the test succeeds) when the completionHandler is executed before the given 1 second timeout.
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)
}
However, if the completionHandler is not called, and therefore the expectation not fulfilled, instead of getting an test failure when calling waitForExpectationsWithTimeout I get an EXC_BAD_ACCESS, which is not very handy since this makes it impossible to see the whole test suite results.
How can I avoid this and get a normal test failure?
error
was nevernil
. The handler actually gets called whether it succeeds or fails. So, you have to check for an error in that case. – Grandchild