Я пишу тест для своего проекта и объявил удаленный API-клиент protolcol:
public protocol ApiClient {
func load(completion: @escaping ([Any]?, String?))
}
и определил клиент API mo c, который подтверждает ApiClient
:
class MocApiClient: ApiClient {
func loadFlights(completion: @escaping ([Any]?, String?)) {
// Load a sample JSON file and return it as response
}
}
таким образом я могу вернуть ответ, загрузив файл JSON
. Это счастливый путь теста. После этого я начал думать о тестировании различных возможных типов ответов и решил, что смогу изменить поведение MocApiClient
, и определил это:
enum TestPath {
case success
case failure
}
и использую его с MocApiClient
:
class MocApiClient: ApiClient {
var path: TestPath = .success
func load(completion: @escaping ([Any]?, String?) -> Void) {
switch path {
case .success:
completion([...], nil)
case .failure:
completion(nil, "error message")
}
}
}
Думаешь, это хорошее решение? Есть ли у вас какие-нибудь подходы к пиву?