XCTAssertEqual produces an error: Expression type '()' is ambiguous without more context
比较两个结果值(见下文(:
let success = Result<String, Error>.success("Value")
let failure = Result<String, Error>.failure(NSError.createError("Error"))
XCTAssertEqual(success, failure)
问题是您要比较的success
和failure
的类型不是Equatable
。
Result<Success, Failure>
仅当Success
和Failure
符合Equatable
时,仅符合Equatable
。从Result
的定义:
extension Result : Equatable where Success : Equatable, Failure : Equatable {}
因此,您需要使用符合Equatable
的自定义Error
类型,或使用其他方法来通过提取成功(或失败(值来比较这两个值:
switch (a, b) {
case let (.success(x), .success(y)):
XCTAssertEqual(x, y)
default:
XCTFail()
}