如何使用XCTWaiter和异常在​​swift中测试异步函数

时间:2018-04-24 11:39:41

标签: swift unit-testing xctest xctestexpectation xctwaiter

我想在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)
    }

1 个答案:

答案 0 :(得分:2)

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
}
相关问题