gpt4 book ai didi

swift - 断言代码在单元测试中的某个时刻运行?

转载 作者:行者123 更新时间:2023-11-28 13:42:54 25 4
gpt4 key购买 nike

我有这个单元测试:

func testState() {
searchController.filter.query = "Missouri"
searchController.resultsSignal.subscribePast(with: self) { sections in

if sections.count < 1 { return }
// Want to test that code at least gets to here at some point
...
}
}

而且我想确保我至少通过了 if sections.count < 1 { return } 这条线在某个时候。

因为它在信号被触发时运行,所以我不在乎是否有不同的信号在某个时刻被触发,但我确实想确保 sections.count > 0 在某个时刻测试。

有没有办法做到这一点?我正在考虑使用 bool 值并将其初始化为 false 然后将其设置为 true if sections.count曾经不止一个,并断言该值是真实的,但这不起作用,除非我使用信号进行延迟。谢谢。

最佳答案

您可以使用 XCTestExpectation并在 sections.count 之后调用 .fulfill 以通知测试异步测试已成功。

func testState() {
let expectation = XCTestExpectation(description: "Should execute")
searchController.filter.query = "Missouri"
searchController.resultsSignal.subscribePast(with: self) { sections in

if sections.count < 1 { return }
// Want to test that code at least gets to here at some point
expectation.fulfill()
...
}
wait(for: [expectation], timeout: 10) // Will fail if .fulfill does not get called within ten seconds
}

关于swift - 断言代码在单元测试中的某个时刻运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55816284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com