Кто-то пытался включить фиктивные данные в новые тесты пользовательского интерфейса Xcode 7?
- Вы использовали определенный фреймворк?
- Как вы справились с целями?
Кто-то пытался включить фиктивные данные в новые тесты пользовательского интерфейса Xcode 7?
Я думаю, что есть много способов подойти к этому — сложность в том, что Apple намеренно разработала UITests для запуска полностью отдельно от тестируемого приложения. Тем не менее, есть несколько хуков, которые вы можете использовать для координации логики в приложении с логикой в ваших тестах, чтобы вводить фиктивные данные или каким-либо образом изменять поведение вашего приложения. Два, которые я нашел наиболее полезными, это launchEnvironment
и launchArguments
.
в вашем тесте - XCUIApplication().launchArguments
соответствует NSProcessInfo.processInfo().arguments
в коде вашего приложения
аналогично: XCUIApplication().launchEnvironment
-> NSProcessInfo.processInfo().environment
launchEnvironment — это простой словарь, тогда как аргументы запуска — это массив. В своем тесте вы можете ввести любые значения, которые вам нравятся, в любой из этих параметров перед запуском приложения:
let app = XCUIApplication()
app.launchEnvironment["-FakedFeedResponse"] = "success.json"
app.launch()
Затем в логике вашего приложения вы можете включить эти значения по своему усмотрению. Что-то типа:
func fetchFeed() -> JSON {
if let fakedJSONFilename = NSProcessInfo.processInfo().environment["-FakedFeedResponse"] {
let fakePayload = fakeDataFileNamed(fakedJSONFilename)
return fakePayload
} else {
//Make network call and return a real JSON payload
}
}
Используя этот шаблон, ваши поддельные/фиктивные данные должны быть файлами, включенными в качестве членов цели приложения.