Definicja #
Jasmine to framework testowy dla JavaScriptu oparty na podejściu BDD (Behavior-Driven Development). Umożliwia pisanie testów jednostkowych i integracyjnych z czytelną, opisową składnią w języku naturalnym. Jasmine jest samodzielnym narzędziem — nie wymaga zewnętrznych bibliotek ani DOM.
Kluczowe elementy składni Jasmine:
- describe() — grupuje powiązane testy w suity (bloki opisowe)
- it() — definiuje pojedynczy test (specyfikację)
- expect() + matchery — asercje:
toBe(),toEqual(),toBeTruthy(),toContain(),toThrow() - beforeEach / afterEach — setup i teardown przed/po każdym teście
- spyOn() — wbudowane szpiegowanie i mockowanie metod obiektów
- Async support — obsługa testów asynchronicznych przez done callback lub async/await
Jasmine jest domyślnym frameworkiem testowym generowanym przez Angular CLI i ściśle współpracuje z runnerem Karma (uruchamianie testów w przeglądarce). W nowszych projektach Angular jest stopniowo zastępowany przez Jest, który oferuje szybsze wykonanie i lepsze wsparcie dla TypeScript.
Zastosowania #
- Pisanie testów jednostkowych komponentów Angular — weryfikacja logiki, metod i właściwości komponentów
- Testowanie serwisów Angular z mockowaniem zależności przez spyOn i jasmine.createSpyObj
- Tworzenie testów integracyjnych sprawdzających współpracę wielu komponentów lub serwisów
- Testowanie funkcji czystych JavaScript/TypeScript niezależnie od frameworka
- Tworzenie testów asynchronicznych dla Promise i Observable w ekosystemie Angular/RxJS
Ścieżka nauki #
Jasmine najłatwiej poznać przez projekt Angular — każdy nowy projekt wygenerowany przez Angular CLI zawiera skonfigurowany Jasmine z Karmą. Oficjalna dokumentacja Angular Testing (angular.io/guide/testing) jest najlepszym punktem startowym, zawiera obszerne przykłady testowania komponentów, serwisów i pipe'ów.
Zacznij od prostych testów jednostkowych dla funkcji i klas, następnie przejdź do testowania komponentów Angular z TestBed. Naucz się używać spyOn do mockowania zależności i HttpClientTestingModule do mockowania HTTP. Poznaj jasmine.createSpyObj do tworzenia obiektów-atrap.
Zasoby: oficjalna dokumentacja jasmine.github.io, Angular Testing Guide, kurs "Testing Angular" Mathiasa Schäfera. Po opanowaniu Jasmine warto poznać Jest — ma podobną składnię, ale szybsze wykonanie i lepszą integrację z TypeScript, co czyni go preferowanym wyborem w nowych projektach.