8

我正在使用 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,这不是很方便,因为这使得不可能看到整个测试套件的结果。

我怎样才能避免这种情况并获得正常的测试失败?

4

1 回答 1

4

似乎是什么导致 EXC_BAD_ACCESS 在创建期望时传递了一个 nil 描述。

将任何字符串传递给此调用使其工作,当期望未满足时,我们会得到预期的测试失败。

let expectation: XCTestExpectation = self.expectationWithDescription("...")
于 2014-12-21T15:31:20.900 回答