使用waitForExpectations时的API违规

时间:2016-12-14 14:38:58

标签: ios testing

我正在运行UI测试,我需要使用waitForExpectations API测试异步函数。

我收到此错误:

  

" NSInternalInconsistencyException"," API违规 - 调用等待而没有任何期望已经设置。"

我真的不明白,因为我已经正确地创造了期望。

此外,似乎存在文档错误:根据文档,API为expectation(description:)但编译器不会接受,而是我需要使用XCTestExpectation()来创建一个。

 func testExample() {
    XCTAssertTrue(state == .STATE_NOT_READY)
    let exp1 = XCTestExpectation()

    let queue = DispatchQueue(label: "net.tech4freedom.AppTest")
    let delay: DispatchTimeInterval = .seconds((2))
    queue.asyncAfter(deadline: .now() + delay) {
        XCTAssertTrue(true)
        exp1.fulfill()
    }

    self.waitForExpectations(timeout: 4){ [weak self] error in
        print("X: async expectation")
        XCTAssertTrue(true)
    }
    self.waitForExpectations(timeout: 10.0, handler: nil)
}

1 个答案:

答案 0 :(得分:20)

好的,你的错误是你试图直接实例化期望。文档清楚地说

  

使用以下 XCTestCase方法创建XCTestExpectation实例:
   - 期望(描述:)

这意味着,您应该创建这样的期望:

func testMethod() {
    let exp = self.expectation(description: "myExpectation")
    // your test code
}