Mam kilka wadliwych specyfikacji z dość dużej zmiany architektonicznej. Chciałbym popracować nad ich naprawieniem jeden po drugim, oznaczając je „fokus”.
Czy Jasmine.js ma taką funkcję? Przysięgałem, że przeczytałem w pewnym momencie, że tak, ale nie widzę tego w dokumentach.
Odpowiedzi:
Możesz uruchomić pojedynczą specyfikację, używając adresu URL specyfikacji
Teraz możesz uruchomić całą specyfikację według tego adresu URL
http://localhost:8888?spec=MySpec
i pierwszy test za pomocąhttp://localhost:8888?spec=MySpec+function+1
źródło
describe("MySpec", ...)
a nie ten jeden:describe("MySpec blah blah", ...)
? Wygląda na to, że dopasowuje podciąg.http://localhost:8888?spec=function+1
powinno też działać (często nie trzeba podawać MySpec)fdescribe
,fit
Korzystając z Karmy, możesz włączyć tylko jeden test z
fit
lubfdescribe
(iit
iddescribe
w Jasmine przed 2.1).Działa tylko
Spec1
:Działa tylko
testA
:źródło
fdescribe
ifit
: github.com/jasmine/jasmine/commit/ ...iit
iddescribe
są to dodatki Karmy, a nie Jasmine.xit
ifit
wtapianieit
są trudne do odczytania i podatne na błędy?W rdzeniu od 2.1 z
fit
ifdescribe
.źródło
Dla każdego, kto się na to natknie, lepszym podejściem, które można skonfigurować z samego kodu, jest użycie tej wtyczki: https://github.com/davemo/jasmine-only
Pozwala ustawić wyłączność specyfikacji bezpośrednio w kodzie w następujący sposób:
Odbyła się długa dyskusja, aby dodać to do rdzenia Jasmine, patrz: https://github.com/pivotal/jasmine/pull/309
Jeśli używasz Jasmine przez Karma / Testacular, powinieneś już mieć dostęp do
ddescribe()
iiit()
źródło
fdescribe
ifit
- „f” oznacza „skupiony”. Zobacz także jasmine.github.io/2.1/focused_specs.htmlMożna to zrobić na kilka sposobów.
Jest: Jasmine's Focused Specs (2.2): http://jasmine.github.io/2.2/focused_specs.html
Skoncentrowanie specyfikacji sprawi, że będą jedynymi, które działają. Każda specyfikacja zadeklarowana jako fit jest skupiona.
Jednak nie podoba mi się pomysł edycji moich testów (fit i fdescribe), aby uruchamiać je selektywnie. Wolę używać narzędzia uruchamiającego testy, takiego jak karma, który może odfiltrowywać testy za pomocą wyrażenia regularnego.
Oto przykład użycia grunt .
Jeśli używasz gulp (który jest moim ulubionym narzędziem do uruchamiania zadań), możesz przekazywać argumenty do gulp-karmy za pomocą yargów i dopasowywać wzorce, ustawiając konfigurację karmy.
Coś jak to:
Zobacz moje streszczenie: https://gist.github.com/rimian/0f9b88266a0f63696f21
Więc teraz mogę uruchomić pojedynczą specyfikację, używając opisu:
Moje lokalne uruchomienie testowe: (Wykonano 1 z 14 (pominięto 13))
Zobacz także: https://github.com/karma-runner/karma-jasmine
źródło
Możesz utworzyć wszystkie swoje specyfikacje z góry, ale wyłącz je za pomocą
xdescribe
i,xit
dopóki nie będziesz gotowy do ich przetestowania.źródło
W przypadku samodzielnego Jasmine (2.0.0) na spec_runner.htlm mogłem kliknąć konkretną specyfikację i skupić się na tej specyfikacji. Powinienem był zauważyć tę funkcję wcześniej.
źródło
Nie jest to dokładnie to, o co prosiłeś, ale dodanie
iit
przetestuje tylko tę konkretną specyfikację i zignoruje wszystkie inne w pliku,ddescribe
działa w ten sam sposób. Możesz więc skupić się na konkretnej specyfikacji za pomocąiit
lubddescribe
źródło
To najbardziej uproszczona odpowiedź z praktycznym przykładem. Nawet w fdescribe można uruchomić kilka bloków za jej pomocą. f oznacza skupienie.
Również w bloku none fdescribe, który jest właśnie opisany, możesz wybrać tylko określone bloki it, oznaczając je jako dopasowane.
Uruchom poniższy kod i obserwuj dziennik konsoli, przeczytaj również komentarze w kodzie. Przeczytaj artykuł tego autora, który też pomaga. https://davidtang.io/2016/01/03/controlling-which-tests-run-in-jasmine.html
źródło