2016-10-13 18 views
10

Używam Angular-CLI (webpack version) do mojego projektu Angular 2 i muszę również używać jQuery (niestety w moim przypadku jest to zależność Semantic-UI i używam go do obsługi menu rozwijanych).Angular 2 i jQuery - jak testować?

droga ja używam go:

npm install jquery --save 

Potem wymieniając w nim angular-cli.json plik w tablicy scripts:

scripts": [ 
    "../node_modules/jquery/dist/jquery.min.js" 
] 

więc robi dołączonego do pliku wiązki i ten plik jest automatycznie stosowany do plik html root:

<script type="text/javascript" src="scripts.bundle.js">

Następnie declare var $: any; w plikach, gdzie jest to potrzebne i działa dobrze. Jest to problem z testami ng test.

+0

W jaki sposób uwzględniłeś jQuery w swoim spec specyfikacji? Otrzymuję ten sam błąd i próbuję dołączyć jQuery za pośrednictwem tablicy plików w pliku karma.conf.js. –

Odpowiedz

18

Dzieje się tak dlatego, że testowy plik html, dostarczony przez Karmę, nie zawiera pliku scripts.bundle.js, tak jak to robi zwykle obsługiwana wersja.

Rozwiązanie jest łatwe; wystarczy umieścić tę samą ścieżkę do pliku jquery w pliku karma.config.js w folderze głównym projektu. Ten plik jest dostępny w katalogu głównym projektu.

W files tablicy, dodać ścieżkę z watched flagę tak:

files: [ 
    { pattern: './node_modules/jquery/dist/jquery.min.js', watched: false },  
    { pattern: './src/test.ts', watched: false } 
] 

Karma teraz powinni wiedzieć o zależność jQuery.

+0

Och, gosh, to był krok od tego, co próbowałem zrobić przez 2 dni, właśnie usunąłem flagę "w zestawie" z tej samej linii i zadziałało! – Ayyash

+0

kiedy używam tego kodu jQuery ('# confirmDialogModal') modal ('hide') ;, otrzymuję modal nie jest błędem funkcji podczas uruchamiania przypadków testowych, ale w prawdziwej aplikacji działa. również jQuery ('# facilityIdModalButton'). click(); nie rzuca żadnych rzutów podczas uruchamiania przypadków testowych. każdy pomysł, jak naprawić lub pominąć wywołania jquery –