2015-09-01 16 views
10

Niedawno odkryłem niesamowity pakiet ng-describe, który sprawia, że ​​pisanie testów jednostkowych dla aplikacji AngularJS jest bardzo przejrzyste dzięki usunięciu całego kodu standardowego, który musisz zapamiętać/wyszukać i pisać, aby załadować, wstrzyknąć, wyśmiać lub szpiegować.Używanie ng-describe do testów end-to-end z kątomierzem

Czy ktoś próbował użyć ng-describe z protractor? Czy ma to sens i czy możemy z niego skorzystać?


Jedną z rzeczy, która wpadła mi w oko, jak łatwo można drwić odpowiedzi 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(); 
    }); 
    } 
}); 

szyderczy odpowiedzi HTTP zwykle pomaga osiągnąć lepsze pokrycie e2e i przetestować jak działa UI reaguje konkretne sytuacje i jak działa obsługa błędów. To jest coś, co obecnie robimy z protractor-http-mock, są też other options, które nie wyglądają tak łatwo jak z ng-describe.

Odpowiedz

9

Kątomierz podstawowy przeznaczony jest do testowania E2E (z seloxowym webdriverem), co oznacza, że ​​konieczne jest podłączenie rzeczywistego zaplecza (może to być również fałszywy backend). Ponieważ twórca programu Protractor napisał here, kod aplikacji działa oddzielnie z kodem testowym i nie można uzyskać łatwego dostępu do usługi $ http.

Kpiąc z wywołań zaplecza, nie wykonujesz już testów E2E, nawet jeśli używasz narzędzia do testów E2E, takich jak Kątomierz. Dlaczego nie wrócić do testów jednostkowych. Jedyną różnicą będzie to, że użyjesz jQuery zamiast funkcji API kątomierza, a testy będą przeprowadzane z karmą. Następnie możesz z łatwością użyć ng-opisz i $ httpBackend, które pierwotnie są przeznaczone do użycia w testach jednostkowych.

Jeśli jednak chcesz kontynuować to podejście, możesz sprawdzić komentarze w tym Protractor issue. Jest kilku facetów, którzy proponują rozwiązania tego problemu i jak wspomniano, już używasz jednego z nich. Ale w tym przypadku ng-opisać nie pomoże ci dużo.

Mam nadzieję, że to odpowie na twoje pytanie.

Powiązane problemy