2015-07-14 13 views

risposta

9

Penso che ci siano molti modi per avvicinarsi a questo - la difficoltà è che Apple ha intenzionalmente progettato UITest per funzionare completamente separato dall'app sotto test. Detto questo, ci sono alcuni ganci che puoi utilizzare per coordinare la logica nell'app con la logica dei test per inserire dati falsi o modificare il comportamento della tua app in qualsiasi modo. I due che ho trovato più utili sono launchEnvironment e launchArguments.

nel test - XCUIApplication().launchArguments corrisponde a NSProcessInfo.processInfo().arguments nel codice dell'app

allo stesso modo: XCUIApplication().launchEnvironment ->NSProcessInfo.processInfo().environment

launchEnvironment è un dizionario dritto in avanti, mentre lanciare argomenti è un array. Nel tuo test è possibile alimentare tutti i valori che ti piace in uno di questi parametri prima si avvia l'applicazione:

let app = XCUIApplication() 
app.launchEnvironment["-FakedFeedResponse"] = "success.json" 
app.launch() 

Poi, nel tuo logica dell'applicazione è possibile attivare questi valori come più vi piace. Qualcosa di simile:

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 
    } 
} 

Utilizzando questo modello di dati falsi/finte dovranno essere file inclusi come membri del bersaglio app.

+0

Grazie! Ho appena trascorso diverse ore a cercare di passare argomenti nel target dell'app e questo ha fatto il trucco. – rob