如何使用 XCTWaiter 和异常测试 swift 中的异步函数
How to test async functions in swift using XCTWaiter and exceptions
我想在 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
returns 一个你应该观察的 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 中测试 异步 函数,因此如下所示,我创建了一个 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
returns 一个你应该观察的 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
}