2015-07-14 2 views

ответ

9

Я думаю, что есть много способов приблизиться к этому - трудность заключается в том, что 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 
    } 
} 

Используя эту модель ваши подделыванным/фиктивные данные должны быть файлы включены в состав целевого приложения.

+0

Спасибо! Я просто провел несколько часов, пытаясь передать аргументы в приложение, и это сделало трюк. – rob

 Смежные вопросы

  • Нет связанных вопросов^_^