Я хотел бы провести модульное тестирование приведенного ниже кода.
По сути, я бы сказал, что
dispatchRequest
называется
dispatchRequest
вызывается с правильнымparams
dispatchRequest
обработчик завершения возвращается, как и ожидалось
dispatchRequest
обрабатывает ошибки, как и ожидалось
Я изо всех сил пытаюсь понять, как я могу высмеивать внутреннюю работу call
функция, так что я могу обойти это.
Должен ли я создать MockNetworkClient
, который также соответствует APIClient
?
struct NetworkClient: APIClient {
func call(with endpoint: IdentityEndpoint, completion: @escaping (Result<IdentityResponse>) -> Void) {
dispatchRequest(route: endpoint, completion: completion)
}
}
NetworkClient соответствует APIClient, который выглядит следующим образом
protocol APIClient {
var session: URLSession { get }
func call<T: Codable>(route: EndPointType, completion: @escaping (Result<T>) -> Void) -> Void
func cancel() -> Void
}
extension APIClient {
var session: URLSession {
return URLSession.shared
}
func call<T: Codable>(route: EndPointType, completion: @escaping (Result<T>) -> Void) -> Void {
do {
let request = try constructRequest(from: route)
execute(with: request, completion: completion)
} catch {
print("something went wrong....")
}
}}