给定以下方法签名,我如何测试此方法:
func doTheJob(param: String) async throws -> String
字符串XCTAssertThrowsError?我尝试了XCTAssertThrowsError(await object.doTheJob(param: "")),但得到一个错误:在不支持并发的自动闭包中调用“autoclosure”解决这个问题的办法是什么?
XCTAssertThrowsError
XCTAssertThrowsError(await object.doTheJob(param: ""))
5f0d552i1#
最好使用Feedback Assistant为此提交一个功能请求,但现在您可以创建一个func,如果expression没有throw,则XCTFail
func
expression
throw
XCTFail
func xCTAssertThrowsError<T>(_ expression: @autoclosure () async throws -> T) async { do { _ = try await expression() XCTFail("No error was thrown.") } catch { //Pass } }
字符串然后你可以使用它类似。
func testExample() async throws { await xCTAssertThrowsError(try await doSomething()) }
型如果你想使用errorHandler和其他参数,你也可以在你的自定义func中实现它们。
errorHandler
func xCTAssertThrowsError<T>( _ expression: @autoclosure () async throws -> T, _ message: @autoclosure () -> String = "", file: StaticString = #filePath, line: UInt = #line, _ errorHandler: (Error) -> Void = { _ in } ) async { do { _ = try await expression() XCTFail(message()) } catch { errorHandler(error) } }
型
1条答案
按热度按时间5f0d552i1#
最好使用Feedback Assistant为此提交一个功能请求,但现在您可以创建一个
func
,如果expression
没有throw
,则XCTFail
字符串
然后你可以使用它类似。
型
如果你想使用
errorHandler
和其他参数,你也可以在你的自定义func
中实现它们。型