Вот как я высмеиваю вызов API. Шаги требуют
1) Нет подключения к интернету
2) Насмешка над вызовом API и данными
Я создал модели данных для ответа API, и вот как я это высмеиваю
func buildActivityList() -> ActivityResponse {
let resp = ActivityResponse(json: .null)
let userHistory = ActivityUserHistory(json: .null)
userHistory.time = "2018-02-16T07:41:54.046Z"
resp.userHistory = [userHistory]
//Add all other relevant data
return resp
}
Затем вам нужно переопределить функцию, если вы вызываете API, и передать вышеуказанные макетированные данные как ответ API.
Предположим, у вас есть класс, где вы называете API
class UserService {
func getUserDetails(completion: (_: ActivityResponse?, _: Error?)) {
//get RESPONSE from server
let data = ActivityResponse(object: RESPONSE)
return completion(data, nil)
}
}
Теперь в вашем тестовом классе вызовите buildActivityList()
, который мы создали, и передайте его в фиктивный класс.
class MockUserService: UserService {
override func getUserDetails(completion: (_: ActivityResponse?, _: Error?)) {
return completion(buildActivityList(), nil)
}
}
Таким образом, всякий раз, когда вы тестируете вызов API, вводятся фиктивные данные. Таким образом, нет необходимости подключения к интернету.
Надеюсь, это поможет