【发布时间】:2018-10-04 15:51:44
【问题描述】:
我想在 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)
}
【问题讨论】:
-
使用 XCTestCase 的便捷函数更容易:
let asyncCompleted = self.expectation(description: "Some description")和self.waitForExpectations(timeout: 2.0)。似乎 XCTWaiter.wait 不仅返回结果,而且在超时的情况下不会使测试失败。 -
按预期工作,谢谢
标签: swift unit-testing xctest xctestexpectation xctwaiter