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?