我们可以用XCTAssertThrowsError
测试抛出的错误。可以使用expectation
测试异步事物。我有一些方法可以将工作分派到后台线程,并在某个时候抛出错误。
有可能在将来的某个地方抛出错误吗?我想我需要把expectation
和XCTAssertThrowsError
结合起来,但我不知道怎么做。
复制项目:https://github.com/Jasperav/ThrowingAsyncError。只需克隆项目并运行测试,其中一个测试就会失败。我制作了一个类,它将在分配后的几秒钟后崩溃。我想确保它在几秒钟后继续崩溃,所以我想要一个测试用例。
2条答案
按热度按时间oewdyzsn1#
我看了一下复制项目,想知道你在这里想要实现什么。
据我所知:
XCTAssertThrowsError是接受可能引发的块的Assert。它们只是碰巧Assert,当同步块运行完毕时,会在其中抛出错误。
XCTestExspectation是跟踪请求条件是否满足的类。它们用于跟踪需要保留和检查的异步代码行为对象/引用。
您似乎要做的是让XCTestExspectation与XCTAssertThrowsError以相同的方式工作,就像在异步块将抛出的同步Assert中一样。由于代码的运行和返回方式,它不会以这种方式工作。
您引用的异步代码不会引发(计时器初始值设定项)。据我所知,没有任何可以抛出的异步块。也许您应该问的问题是,我们如何才能使同步操作有时选择同步运行,但也在感觉像是...
或者,对于您想要测试的每个类中的一些额外复杂性,我已经制定了一个解决方案,几乎是最低限度的,以使其易于测试和可移植……
https://github.com/Jasperav/ThrowingAsyncError/pull/1/files
我能问一下你为什么要做这样的事吗?
kgsdhlau2#
您可以在预期失败的调用的Catch块中满足预期。