XCTestExpectation 不会等待给定的时间

Posted

技术标签:

【中文标题】XCTestExpectation 不会等待给定的时间【英文标题】:XCTestExpectation doesn't wait for given amount of time 【发布时间】:2014-10-15 16:08:53 【问题描述】:

我编写了一个测试来检查某个值是否会在 5 秒内下降到零。 NSTimer 每隔一秒就会触发一个将该值减一的方法。

看起来像这样:

    let foo = SomeObject(initWithTime: 5)
    let expectation = expectationWithDescription("Ohai")
        timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: foo, selector: Selector("decrement"), userInfo: nil, repeats: true)
    XCTAssertTrue(foo.isFinished, "Foo is finished, so it should be true")
    expectation.fulfill()
    waitForExpectationsWithTimeout(5.0, handler: nil)

当 foo 达到零时,isFinished 设置为 true。计时器工作正常,但期望不等待 5 秒,只是立即崩溃。发生了什么事?

【问题讨论】:

【参考方案1】:

您的 XCTAssertTrue 似乎立即失败,因为 foo 在立即调用时可能尚未完成。

【讨论】:

以上是关于XCTestExpectation 不会等待给定的时间的主要内容,如果未能解决你的问题,请参考以下文章

等待带有完成处理程序的*特定*(单个)XCTestExpectation?

xcodebuild 无法使用 XCTestExpectation 运行异步测试?

异步等待失败 swift API 请求

Swift 单元测试 - 等待 viewDidLoad

如何知道 XCTestExpectation 当前的履行计数

开玩笑的单元测试不会等待 axios 响应