2015-07-14 9 views

Odpowiedz

9

Myślę, że istnieje wiele sposobów podejścia do tego - trudność polega na tym, że Apple celowo zaprojektowało UITests, aby działały całkowicie niezależnie od testowanej aplikacji. To powiedziawszy, istnieje kilka haczyków, których możesz użyć do koordynowania logiki w aplikacji z logiką w testach, aby podawać fałszywe dane lub w jakikolwiek sposób zmieniać zachowanie aplikacji. Dwa najbardziej użyteczne to: launchEnvironment i launchArguments.

w teście - XCUIApplication().launchArguments odpowiada NSProcessInfo.processInfo().arguments w kodzie aplikacji

również: XCUIApplication().launchEnvironment ->NSProcessInfo.processInfo().environment

launchEnvironment jest prosta słowniku natomiast uruchomienie argumentów jest tablicą. W swoim badaniu można karmić żadnych wartości chcesz do któregoś z tych parametrów przed uruchomieniem aplikacji:

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

Następnie w logice aplikacji można przełączyć się na tych wartościach jednak lubisz. Coś takiego:

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

Stosując ten wzór, twoje sfałszowane/fałszywe dane będą musiały być plikami dołączonymi do członków aplikacji.

+0

Dziękujemy! Spędziłem kilka godzin próbując przekazać argumenty do celu aplikacji i to wystarczyło. – rob

Powiązane problemy