I test di integrazione front-end dovrebbero effettuare richieste HTTP?

5

Sto sviluppando un'applicazione web a pagina singola utilizzando AngularJS. I dati per questa applicazione vengono utilizzati su un'API REST che è ben testata a pieno titolo.

L'applicazione Angolare ha una serie di test unitari che testano ad es. controllori individuali e i loro metodi. Ha anche una serie di test di integrazione che attualmente verificano che i controller si comportino correttamente quando applicati a una vista.

Sia l'unità che i test di integrazione stanno attualmente condividendo un insieme di dati JSON stub restituiti quando vengono fatte determinate richieste HTTP (tramite $httpBackend Servizio angolare). Nessuna richiesta HTTP effettiva viene inviata al server API durante il test.

Questo è un buon approccio per i test di integrazione front-end? Per come lo vedo io, i test unitari stanno testando piccole unità di codice (come i singoli metodi nei controller) e i test di integrazione sono testando il modo in cui queste unità si comportano nel più ampio contesto di una vista o modello. La configurazione consente di testare l'applicazione front-end in modo completamente indipendente.

Tuttavia, gli sviluppatori di Goniometro (il framework di test di integrazione che sto usando) hanno affermato in numerose occasioni che credono che l'integrazione i test dovrebbero fare richieste HTTP a un server reale (vedi questo problema di GitHub ):

Protractor is intended for end to end tests, so the primary use case is when you have an actual backend hooked up.

Supponendo che la risposta alla domanda precedente sia "sì" (o "forse"), dovrebbe esserci una terza serie di test che verifica effettivamente la comunicazione tra l'applicazione front-end e l'API REST?

    
posta James Allardice 18.02.2014 - 10:59
fonte

1 risposta

3

È utile disporre di test funzionali automatizzati che testano il front-end mentre deridono il server, ma non sono test di integrazione . Testano ancora un componente in isolamento, nulla è integrato. Sono test funzionali del componente.

Per qualificarsi come test di integrazione , il test dovrebbe verificare che tutti i componenti della soluzione finale integrare , cioè lavorare insieme. Per questo ha bisogno del setup completo . Con il vero server e il vero database caricato con dati di esempio realistici e niente affatto. Vuoi fare un test del genere.

I test di integrazione (della configurazione completa) sono i più importanti. Testano tutto il codice che sarà coinvolto e dovresti farlo prima di dare fiducia all'applicazione. Quali altri test si desidera è una questione di bilanciamento degli sforzi per crearli con il beneficio che portano. Il vantaggio principale dei test dei singoli componenti è che consentono un debugging più semplice rispetto ai test di integrazione, quindi scrivi quei test che ti aiutano nel debugging. Quali sono dipende dalla complessità della configurazione dei vari componenti ed è quindi specifica per il progetto.

    
risposta data 18.02.2014 - 11:17
fonte

Leggi altre domande sui tag