Czy istnieje sposób uruchomienia ng test
pojedynczego pliku zamiast całego zestawu testów? Idealnie chciałbym uzyskać możliwie najszybszą pętlę sprzężenia zwrotnego, kiedy edytuję plik, ale karma
wykonuje cały zestaw przy każdym zapisie, co jest nieco powolne, gdy tworzysz wystarczająco duży zestaw testów.
To różni się od Jak wykonać tylko jedną specyfikację testową z angular-cli tym, że to pytanie dotyczy uruchomienia indywidualnej specyfikacji. Chodzi o uruchomienie pojedynczego pliku. Rozwiązanie obejmuje tę samą specyfikację Jasmine, ale charakter pytania jest nieco inny.
angular
jasmine
angular-cli
karma-runner
Elliot Larson
źródło
źródło
Odpowiedzi:
Odkryłem, że Jasmine pozwala na przedrostek
describe
iit
metody zf
(dla fokusu):fdescribe
ifit
. Jeśli użyjesz któregokolwiek z nich, Karma przeprowadzi tylko odpowiednie testy. Aby skupić się na bieżącym pliku, możesz po prostu przejść na najwyższy poziomdescribe
i zmienić go nafdescribe
. Jeśli używasz Jasmine przed wersją 2.1, kluczowe słowa kluczowe to:iit
iddescribe
.Ten przykładowy kod uruchamia tylko pierwszy test:
Oto dokumentacja Jasmine dotycząca specyfikacji Focusing, a tutaj powiązany artykuł SO, który zawiera dodatkowe przemyślane rozwiązania.
źródło
W dzisiejszych czasach można to osiągnąć za pomocą
include
opcji. https://angular.io/cli/test#optionsJest to dopasowanie globalne, więc na przykład:
Nie mogę go znaleźć w informacjach o wydaniu 8.1.0 , ale @Swoox wspomina poniżej, że jest to funkcja po wersji cli
8.1.0
. Dzięki, że to rozgryzłeś.źródło
Warto wspomnieć, że możesz wyłączyć dany test bez komentowania przez
xdescribe
ixit
I jak ktoś już powiedział, jeśli chcesz skupić się na jakimś teście, to
fdescribe
ifit
źródło
Odkryłem, że
ng test
ma dodatkową opcję,--include
której możesz użyć, aby móc uruchomić test dla pojedynczego pliku lub dla określonego katalogu lub dla kilku plików:ng cli docs
źródło
Możesz przejść do
src/test.ts
następującego wiersza i zmienić go:const context = require.context('./', true, /\.spec\.ts$/);
do
const context = require.context('./', true, /**yourcomponent.component**\.spec\.ts$/);
źródło
Rozszerzenie Visual Studio Code
Najprostszym sposobem jest użycie rozszerzenia vscode-test-explorer wraz z jego podrzędnym adapterem angular- karma-test-explorer i jasmine-test-test , otrzymasz listę bieżących testów do uruchomienia jeden po drugim, jeśli chcesz:
To ta sama odpowiedź, której udzieliłem na to pytanie , jest tam więcej szczegółów.
źródło
Korzystanie z ng test --main file.spec.ts
źródło
W Angular 9 miałem szczęście do następujących rzeczy:
Jeśli chcesz przetestować konkretny plik:
ng test --test-file=path/to/your/file.component.spec.ts
Jeśli chcesz przetestować tylko to, co zmieniło się od ostatniego zatwierdzenia (używając git lub innej kontroli wersji)
Jeśli masz wiele projektów w swoim projekcie Angular i / lub korzystasz z NX, możesz określić projekt Angular do przetestowania:
Możesz także użyć
na coś takiego
path/to/your/component/componentname.spec.ts
. Spowoduje to przeskanowanie każdego pliku w każdym projekcie i jest wolniejsze.źródło
Musisz iść
src/test.ts
i możesz zmienić następujący kod numeru linii 18:do
źródło
Działa, jeśli określisz plik specyfikacji jako parametr.
Na przykład:
ng test foo.spec.ts
Mam nadzieję że to pomoże.
źródło