我正在使用 XCTestExpectation 测试异步调用。
当在给定的 1 秒超时之前执行 completionHandler 时,以下代码有效(测试成功)。
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)
}
然而,如果没有调用completionHandler,因此期望没有实现,而不是在调用waitForExpectationsWithTimeout时得到一个测试失败,我得到一个EXC_BAD_ACCESS,这不是很方便,因为这使得不可能看到整个测试套件的结果。
我怎样才能避免这种情况并获得正常的测试失败?