gpt4 book ai didi

swift - 测试时如何断言异步抛出错误?

转载 作者:行者123 更新时间:2023-12-04 17:33:17 25 4
gpt4 key购买 nike

我们可以使用 XCTAssertThrowsError 测试抛出的错误。 .可以使用 expectation 测试异步事物.我有一些方法可以将工作分派(dispatch)到后台线程,并且有时会引发错误。

是否有可能期望在将来的某个地方抛出错误?我需要合并expectationXCTAssertThrowsError我想,但我不知道如何。

复制项目:https://github.com/Jasperav/ThrowingAsyncError .只需克隆项目并运行测试,其中一个会失败。我做了一个类,它会在分配后几秒钟后崩溃。我想确保它在几秒钟后继续崩溃,所以我想要一个测试用例。

最佳答案

我看了一下复制项目,看看你想在这里完成什么......

To my understanding:

XCTAssertThrowsError are assertions that takes in a block that can throw. They just happen to assert that an error is thrown in a synchronous block when it's done running.

XCTestExpectation are classes that keep track of whether or not requested conditions are met. They are for keeping track of asynchronous code behavior objects/references need to be kept and checked later.



你似乎想要做的是像 这样的东西。 XCTestExpectation 以同样的方式工作 XCTAssertThrowsError 确实,如制作 同步断言 异步 block 会抛出。由于代码运行和返回的方式,它不会那样工作。

您引用的异步代码不会抛出(计时器初始化程序)。据我所知,没有任何可以抛出的异步 block 。也许您应该问的问题是,我们如何让同步操作有时选择同步运行,但在感觉像...的时候也选择异步运行。

或者,对于您想测试的每个类(class)的一些额外复杂性,我已经制作了一个几乎是最低限度的解决方案,以使其易于测试和便携......

https://github.com/Jasperav/ThrowingAsyncError/pull/1/files

May I ask why you would ever want to do something like this?

关于swift - 测试时如何断言异步抛出错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58633811/

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