Domanda L'API fittizia richiede Xcode 7 Swift Automated UI Testing


C'è un modo per deridere 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.


11
2017-10-08 09:34


origine


risposte:


Nella sua attuale implementazione, questo non lo è direttamente possibile con UI Testing. L'unica interfaccia che il framework ha direttamente nel codice è attraverso di essa avviare argomenti / ambiente.

Puoi fare in modo che l'app cerchi una chiave o un valore specifico in questo contesto e attiva alcune funzionalità. Ad esempio, se il MOCK_REQUESTS il tasto è impostato, iniettare a MockableHTTPClient invece del reale HTTPClient nel tuo livello di rete. Ho scritto su impostazione dei parametri e NSHipster ha un articolo su come leggerli.

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

Ecco un tutorial sulla stub dei dati di rete per il test dell'interfaccia utente Ho messo insieme. Ti guida attraverso tutti i passaggi necessari per ottenere questo attivo e funzionante.


6
2017-10-08 10:49



Se sei preoccupato dell'idea che i mock possano trasformarlo in un ambiente di produzione per qualsiasi motivo, puoi considerare l'utilizzo di una soluzione di terze parti come Charles Proxy.

Utilizzando lo strumento locale della mappa è 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:

Il tuo login raggiunge endpoint yoursite.com/login

in Charles si utilizza lo strumento locale della mappa è possibile instradare le chiamate che colpiscono quell'endpoint in un file salvato sul computer i.e mappedlocal.txt

mappedlocal.txt contiene il seguente testo
HTTP / 1.1 404 non riuscito

Quando Charles è in esecuzione e colpisci questo endpoint, la tua 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.


0
2018-06-23 15:51