swift - 如何使用 XCTWaiter 和异常快速测试异步函数
问题描述
我想在 Swift 中测试异步函数,因此如下所示,我创建了 aXCTestExpectation
并将其传递给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
}
推荐阅读
- java - Wicket - 如何使用 ajax 刷新表中的单行
- python - Robotframework“选择文件”导致AttributeError:模块'base64'在docker中没有属性'encodestring'
- c# - 是否可以获取一个枚举列表并将其转换为另一个?
- swift - 带有导航项的自动布局
- django - Django 管理员查看错误
- docker - Docker Swarm 调度策略
- javascript - 删除后 Nuxt 处理重定向且无错误:beforeUpdate 方向不起作用?
- java - Process,map and collect object in one stream call
- python - 跟踪视频中的对象的最佳方法是什么?
- python - 如何知道两个椭圆是否正在碰撞 - Pygame