Я пытаюсь передать значение обработчику завершения для проверки на предмет модульного тестирования. Это не обычная установка для обработчика завершения, поскольку обработчик завершения - это var:
typealias ResultType = Result<Data>
typealias CompletionType = (ResultType) -> ()
var onCompletion: CompletionType// this is the completion handler
open override func finished(_ errors: [NSError]) {
self.urlSession.invalidateAndCancel()
self.onCompletion(Result.failure(EComError.networkError(.notReachable)))
}
}
Я пытаюсь сравнить var: onCompletion с
self.onCompletion(Result.failure(EComError.networkError(.notReachable)))
но когда я пытаюсь напечатать var: onCompletion после того, как функция была возвращена, она возвращает:
Optional((Function))
Я пытаюсь написать такой тестовый пример:
func test_finishedResult(){
sut?.finished([NSError(code: OperationErrorCode.executionFailed)])
XCTAssertEqual(sut?.onCompletion(Result.failure(EComError.networkError(.notReachable))), sut?.onCompletion)
}
но возвращает ошибку:
Не удается преобразовать значение типа DownloadOperation.CompletionType? (aka 'Optional ‹(Result) -> ()>') в ожидаемый тип аргумента '()?'
куда
Загружается
- это имя класса, в котором находится функция.
Как лучше всего провести модульное тестирование того, что var:
по окончании
равно toself.onCompletion(Result.failure(EComError.networkError(.notReachable)))
?