Swift Quick/Nimble - 等待谓词匹配

Posted

技术标签:

【中文标题】Swift Quick/Nimble - 等待谓词匹配【英文标题】:Swift Quick/Nimble - Wait for predicate to match 【发布时间】:2019-12-05 07:47:39 【问题描述】:

我正在尝试将以下代码块转换为 Quick/Nimble,但没有任何成功

XCTWaiter().wait(for: [XCTNSPredicateExpectation(predicate: NSPredicate(format: "height == 0"), 
                                                 object: vc.myView.frame)], 
                 timeout: 1)

我尝试了以下但测试没有通过

waitUntil(timeout: 2)  done in
    expect(vc.myView.frame.height).to(equal(0))
    done()

提前感谢您的帮助!

【问题讨论】:

嗨,使用 2 秒超时的目的是什么?另外,错误是什么? 嗯,它之前设置为 1,其目的是等待下拉视图关闭,因此 height == 0 很高兴看到更多代码,除非我的回答已经对您有所帮助:) 其余的有点敏感,但其实都一样 【参考方案1】:

我认为“toEventually”是您正在寻找的。示例如下:

expect(vc.myView.frame.height).toEventually(equal(0), timeout: 2)

更多内容请看这里:https://github.com/Quick/Nimble#asynchronous-expectations

【讨论】:

【参考方案2】:

您还可以全局设置超时,例如一旦您的测试开始,它就适用于所有toEventually 调用:

灵活 >= 9.0.0

Nimble.AsyncDefaults.timeout = .seconds(2)

灵巧
Nimble.AsyncDefaults.Timeout = 2

【讨论】:

以上是关于Swift Quick/Nimble - 等待谓词匹配的主要内容,如果未能解决你的问题,请参考以下文章

Swift Quick/Nimble:期望的模棱两可的使用

如何在 Swift Quick Nimble 中执行 beforeAll

quick + nimble 单元测试

xctest 使用 NSPredicate 最终替换 Quick/Nimble

使用 cocoapods 在测试目标中导入 Quick/Nimble 失败

领域模型在运行单元测试时不存储数据