我想用Swift测试异步函数,因此如下所示,我创建了一个XCTestExpectation并将其传递给了一个XCTWaiter。现在,不管期望是否实现,我总是成功地运行一个测试。
你能指出代码中的错误吗。我关注的正是一个为Swift 3创建的博客,然而,我正在运行Swift 4。这就是问题所在吗?

func testAsyncFunction() {
        let expectation = XCTestExpectation(description: "Some description")
        vc.asyncFunction(5) { (abc: Int) -> Int in
            if (abc != 25) {
                // expectation.fulfill()
            }
            return 0
        }
        _ = XCTWaiter.wait(for: [expectation], timeout: 2.0)
    }

最佳答案

XCTWaiter.wait返回您应该观察的XCTWaiter.Result

func testAsyncFunction() {
    let expectation = XCTestExpectation(description: "Some description")
    vc.asyncFunction(5) { (abc: Int) -> Int in
        if (abc != 25) {
            // expectation.fulfill()
        }
        return 0
    }

    let result = XCTWaiter.wait(for: [expectation], timeout: 2.0) // wait and store the result
    XCTAssertEqual(result, .timedOut) // check the result is what you expected
}

关于swift - 如何使用XCTWaiter和异常快速测试异步功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50000764/

10-10 15:54