2015-10-08 15 views
10

Esiste un modo per simulare le richieste durante la scrittura di test dell'interfaccia utente automatizzati in Swift 2.0. Per quanto ne so, i test dell'interfaccia utente dovrebbero essere indipendenti da altre funzionalità. C'è un modo per deridere la risposta dalle richieste del server al fine di testare il comportamento dell'interfaccia utente dipendente dalla risposta. Ad esempio, se il server non è attivo, i test dell'interfaccia utente dovrebbero comunque essere eseguiti. Esempio rapido, per l'accesso, simulazione se la password non è riuscita, l'interfaccia utente dovrebbe mostrare avviso, tuttavia, se l'accesso è riuscito, dovrebbe essere visualizzata la pagina successiva.Richieste API simulate Xcode 7 Swift Test UI automatizzato

+0

Aggiunti alcuni tag più appropriati. – Liam

+0

Penso che @JoeMasilotti sia corretto. Sarei un po 'preoccupato di includere i mock, tuttavia, nel mio codice di produzione. –

+0

Si potrebbe voler controllare SBTUITestTunnel, che può tornare utile per iniettare dinamicamente i dati dal codice di prova al codice dell'app. Vedi la mia risposta [qui] (http://stackoverflow.com/questions/36768883/how-do-i-mock-network-requests-in-xcode-ui-tests-while-the-tests-are-running/36909859 # 36909859) –

risposta

6

Nella sua attuale implementazione, questo non è direttamente possibile con Test UI. L'unica interfaccia che il framework ha direttamente sul codice è attraverso il suo launch arguments/environment.

È possibile fare in modo che l'app cerchi una chiave o un valore specifico in questo contesto e attiva alcune funzionalità. Ad esempio, se è stata impostata la chiave MOCK_REQUESTS, iniettare uno MockableHTTPClient anziché il reale HTTPClient nel proprio livello di rete. Ho scritto su setting the parameters e NSHipster ha un articolo su how to read them.

Anche se non è l'ideale, è tecnicamente possibile eseguire ciò che stai cercando con un po 'di legwork.

Ecco un tutorial on stubbing network data for UI Testing che ho messo insieme. Ti guida attraverso tutti i passaggi necessari per ottenere questo attivo e funzionante.

0

Se si è preoccupati dell'idea che i mock possano trasformarsi in un ambiente di produzione per qualsiasi motivo, è possibile considerare l'utilizzo di una soluzione di terze parti come Charles Proxy.

Utilizzando lo strumento della mappa locale è possibile instradare le chiamate da un endpoint specifico a un file locale sulla macchina. È possibile superare il testo normale nel file locale contenente la risposta che si desidera che restituisca. Per il tuo esempio:

Nome utente colpisce endpoint yoursite.com/login

a Charles si utilizza lo strumento locale mappa è possibile instradare le chiamate colpire quel punto finale a un file salvato sul computer cioè mappedlocal.txt

mappedlocal.txt contiene il seguente testo
HTTP/1.1 404 Impossibile

Quando Charles è in esecuzione e si preme questo endpoint vostra risposta tornerà con un errore 404.

Puoi anche usare un'altra opzione in Charles chiamata "map remote" e creare un intero server simulato in grado di gestire chiamate e risposte come desideri. Questo potrebbe non essere esattamente quello che stai cercando, ma è un'opzione che può aiutare gli altri, e quello che uso io stesso.

Problemi correlati