2015-09-01 8 views
10

Ho scoperto di recente un fantastico pacchetto ng-describe che rende molto trasparenti i test di unità di scrittura per le applicazioni AngularJS estraendo tutto il codice boilerplate da ricordare/cercare e scrivi per caricare, iniettare, deridere o spiare.Uso di ng-describe per il test end-to-end con goniometro

Qualcuno ha provato a utilizzare ng-describe con protractor? Ha senso e possiamo trarne beneficio?


Una delle cose che ha catturato la mia attenzione è il modo facile si può prendere in giro le risposte HTTP:

ngDescribe({ 
    inject: '$http', // for making test calls 
    http: { 
    get: { 
     '/my/url': 42, // status 200, data 42 
     '/my/other/url': [202, 42], // status 202, data 42, 
     '/my/smart/url': function (method, url, data, headers) { 
     return [500, 'something is wrong']; 
     } // status 500, data "something is wrong" 
    }, 
    post: { 
     // same format as GET 
    } 
    }, 
    tests: function (deps) { 
    it('responds', function (done) { 
     deps.$http.get('/my/other/url') 
     .then(function (response) { 
      // response.status = 202 
      // response.data = 42 
      done(); 
     }); 
     http.flush(); 
    }); 
    } 
}); 

beffardo risposte HTTP di solito aiuta a raggiungere una copertura E2E migliore e verificare come funziona UI reagisce situazioni specifiche e come funziona la gestione degli errori. Questo è qualcosa che stiamo facendo attualmente con protractor-http-mock, ci sono anche other options che non sembrano facili come lo è con ng-describe.

risposta

9

Il goniometro primario è destinato al test E2E (con selettore di selenio) e ciò significa che è necessario avere un backend reale collegato (potrebbe essere anche un finto backend). Come il creatore di Protractor ha scritto here, il codice dell'applicazione viene eseguito separatamente con il codice di test e non è possibile accedere facilmente al servizio $ http.

Danneggiando le chiamate di backend, non si sta eseguendo più il test E2E anche se si utilizza lo strumento per test E2E come Goniometro. Perché non tornare ai test unitari allora. L'unica differenza sarà che userete jQuery invece l'API dei Protractor e i test verranno eseguiti con Karma. Quindi è possibile utilizzare facilmente ng-describe e $ httpBackend quale primario è destinato a essere utilizzato nei test di unità.

Tuttavia, se si desidera continuare con questo approccio, è possibile controllare i commenti in questo Protractor issue. Ci sono molti ragazzi che stanno proponendo soluzioni per questo problema e, come già detto, ne stai già utilizzando uno. Ma in questo caso ng-describe non ti aiuterà molto.

Spero che questo risponda alla tua domanda.

Problemi correlati