Результат Swift 5: XCTAssertEqual неоднозначен без дополнительного контекста
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)
1 ответ
Проблема в том, что тип success
а также failure
ты пытаешься сравнить не Equatable
,
Result<Success, Failure>
только соответствует Equatable
когда оба Success
а также Failure
соответствовать Equatable
, Из определения Result
:
extension Result : Equatable where Success : Equatable, Failure : Equatable {}
Таким образом, вам нужно будет использовать пользовательский Error
тип, соответствующий Equatable
или используйте другой способ сравнения двух значений, сначала извлекая значение для успеха (или неудачи):
switch (a, b) {
case let (.success(x), .success(y)):
XCTAssertEqual(x, y)
default:
XCTFail()
}