waitForExpectationsWithTimeout

waitForExpectationsWithTimeout

我正在使用XCTestExpectation测试异步调用。

当在给定的1秒超时之前执行completeHandler时,以下代码有效(测试成功)。

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,这不是很方便,因为这使得无法看到整个测试套件的结果。

如何避免这种情况并导致正常的测试失败?

最佳答案

似乎导致EXC_BAD_ACCESS的原因是在创建期望时传递了nil描述。

将任何字符串传递给此调用使其可以工作,并且在未满足期望的情况下会出现预期的测试失败。

let expectation: XCTestExpectation = self.expectationWithDescription("...")

关于ios - XCTestCase waitForExpectationsWithTimeout :handler: throwing EXC_BAD_ACCESS when expectation is not fulfilled,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27590830/

10-12 14:45