Я пытаюсь понять, как писать тесты пользовательского интерфейса, но не могу заставить работать HTTP-заглушку.Когда я запускаю тест, я не вижу данные из заглушки, но данные из API.
Я пробовал это в Xcode 10.2 и 9.4.1, так что это не потому, что он больше не работаетв Xcode 10.
Я, должно быть, где-то что-то делаю не так, но не могу понять, что.
Я создал минимальный пример, чтобы проверить, было ли это, потому что я работал вбольшой проект и что-то мешало, но это не сработало.
Вы можете найти весь минимальный проект здесь: https://github.com/vrwim/TestingTest
В моем viewcontroller у меня есть простая установка tableview, которая выполняетВызов API и загрузка результата в строки.У меня есть цель тестирования пользовательского интерфейса с простой настройкой теста, которая использует Mockingjay для заглушки HTTP-запроса.
Мой код вызова API:
func callSimpleAPI(completionHandler: @escaping ([Patient]?, Error?) -> ()) {
let url = URL(string: "https://pastebin.com/raw/3PusWbw6")!
let task = URLSession.shared.dataTask(with: url) { data, response, error in
DispatchQueue.main.async {
guard let data = data else {
completionHandler(nil, error!)
return
}
do {
let patientResponse = try JSONDecoder().decode(TherapistPatientResponse.self, from: data)
completionHandler(patientResponse.patients, nil)
} catch {
completionHandler(nil, error)
}
}
}
task.resume()
}
И мой код тестирования:
override func setUp() {
let app = XCUIApplication()
app.launch()
stub(everything, json(/*A json representation of the API response that I want to see*/))
}
Редактировать: я пытался сделать это на своем iPhone с iOS 12.3 beta и симулятором (не бета).
Edit: Также не работает с OHHTTPStubs.Добавил ветку OHHTTPStubs
в пример проекта.
Редактировать: Я нахожусь на MacOS Mojave 10.14.3, и я использовал Xcode 10.2 и 9.4.1 для тестирования.Я попробовал свой iPhone с iOS 12.3 и симулятором с iOS 12.2
Редактировать: я добавил в мой минимальный пример неудачный тест, который должен пройти, если работает сетевая заглушка.