jasmine framework tutorial including jasmine jquery with examples
Ten artykuł dotyczy struktury testowania Jasmine i jej konstrukcji. Dowiedz się także o pakiecie Jasmine-Jquery, który rozszerza Jasmine do testowania aplikacji Jquery:
Dowiedzieliśmy się wszystkiego Karma w naszym poprzednim samouczku z tej serii.
W tym samouczku nauczymy się, jak używać Jasmine do pisania testów dla aplikacji internetowej JavaScript, a także dowiemy się, jak używać pakietu opartego na węzłach Jasmine-Jquery do testowania aplikacji internetowej Jquery.
Tutaj skupimy się głównie na podstawowych konstrukcjach Jasmine do pisania testów.
Zaczynajmy!!
najlepsza aplikacja do sprawdzania temp. procesora
Czego się nauczysz:
Co to są ramy testowe?
Struktury testowe to zestawy programów lub pakietów, które ułatwiają testowanie innego programu w celu zapewnienia jego jakości. Każda platforma programistyczna ma swoją własną strukturę testową, o czym musieliście się nauczyć z naszego poprzedniego samouczka.
Istnieją różne zestawy testów, które można przeprowadzić w dowolnym systemie oprogramowania. Przykłady takich testów obejmuje testy jednostkowe, testy end-to-end (e2e) itp. Sprawdź tutaj po więcej szczegółów.
Przykłady frameworków testowych dla aplikacji JavaScript obejmuje Mocha, Jasmine, intern, jest, Qunit itp.
Wprowadzenie do Jasmine Framework
W obecnym scenariuszu dostępne są różne podejścia do rozwoju. Spośród nich dwa najpopularniejsze podejścia do programowania to Test-Driven Development (TDD) i Behavior Driven Development (BDD).
Programowanie sterowane testami to podejście programistyczne, w którym najpierw piszemy testy, a następnie je uruchamiamy. Każdy test kończy się niepowodzeniem przy pierwszym wykonaniu, ponieważ używane przez niego funkcje nie zostały jeszcze napisane.
Następnie piszemy funkcje i ponownie uruchamiamy testy. Tutaj niektóre testy kończą się niepowodzeniem, a inne przechodzą. Ciągle refaktoryzujemy kod, aby wszystkie testy przeszły pomyślnie.
Rozwój oparty na zachowaniu również opiera się na tym samym podejściu. Jedyną różnicą jest to, że BDD zostało napisane, aby zadowolić właścicieli oprogramowania (zorientowane na klienta / biznes), tj. Aby spełniać funkcje oprogramowania z wymaganiami biznesowymi lub oczekiwanym zachowaniem.
Podczas gdy TDD jest napisane, aby zadowolić twórców oprogramowania, aby można było mieć pewność, że funkcje oprogramowania, które są używane do tworzenia funkcji, dają dokładne wyniki, stabilne i niezawodne.
Widzieć tutaj aby dowiedzieć się więcej o TDD vs BDD.
Jasmine to framework do testowania JavaScript oparty na zachowaniu, który ułatwia pisanie testów i nie zależy od żadnego innego frameworka.
Istnieją dwa sposoby używania Jasmine do pisania testów. Jednym ze sposobów jest użycie samodzielnej wersji dołączonej do specRunner.html (która wyświetla wyniki testów w przeglądarce). Innym sposobem jest po prostu zainstalowanie Jasmine, napisanie testów i uruchomienie go za pomocą programu uruchamiającego testy, takiego jak Karma, aby uzyskać wyniki wyświetlane w oknie konsoli.
W naszym nadchodzącym samouczku przyjrzymy się obu sposobom używania Jasmine.
Podstawowe konstrukcje jaśminowe do pisania testów
Poniżej wymieniono różne konstrukcje Jasmine do pisania testów.
Zobaczmy!!
# 1) opisuje: Ta konstrukcja służy do pisania zestawu testów. Zestaw testów to zbiór wielu testów. „Opisz” jest funkcją samą w sobie, która przyjmuje dwa parametry: Nazwa pakietu i funkcja .
Parametr funkcji zawiera zbiór testów zgrupowanych w zestawie testów.
# 2) to: Ta konstrukcja służy do pisania specyfikacji testowej. Specyfikacja testowa to zestaw konstrukcji, które testują określone lub najdrobniejsze oczekiwania dotyczące systemu.
Podobnie jak opisuj konstrukcję, również przyjmuje dwa parametry: Nazwa testu i funkcja zawierająca twierdzenia oceniające, czy oczekiwanie zostało spełnione, czy nie.
# 3) Oczekuj : Konstrukcja ta pomaga w testowaniu, czy oczekiwania od systemu oprogramowania są spełnione, czy nie.
Pobiera parametr o nazwie rzeczywisty (który jest wynikiem zwracanym przez system oprogramowania), a następnie jest powiązany z inną konstrukcją zwaną dopasowaniem (oczekiwany wynik).
# 4) Mecze : To jest zbiór konstrukcji, do których jest przypisana konstrukcja oczekiwana. Określa, czy oczekiwanie zostało spełnione, czy nie.
Konstrukcje te przyjmują oczekiwaną wartość najbliższego przeprowadzanego testu i dopasowują ją do rzeczywistej wartości uzyskanej podczas wykonywania testu. Kliknij tutaj aby uzyskać pełną listę konstrukcji dopasowujących Jasmine
# 5) beforeEach : To jest konstrukcja globalna, dostarczona przez Jasmine, aby pomóc Ci utrzymać testy w stanie SUCHYM (nie powtarzaj tego). Ta konstrukcja jest zwykle używana w parametrze funkcji konstrukcji opisującej.
Każdy kod wewnątrz jest uruchamiany raz przed uruchomieniem specyfikacji w pakietach. Dlatego każdy kod, który chcesz uruchomić jako pierwszy przed wszystkimi specyfikacjami w pakiecie, powinien zostać umieszczony tutaj.
# 6) afterEach: Ta konstrukcja jest taka sama jak beforeEach, a różnica polega na tym, że kod, który zawiera, jest uruchamiany po każdym kodzie po uruchomieniu konstrukcji opisującej.
# 7) to : Ta konstrukcja jest pustym obiektem, którego można używać do udostępniania wartości w konstrukcjach „beforeEach”, „afterEach” i „it” w dowolnych zestawach testów. Każdy zestaw testów ma swój własny obiekt i obiekt jest resetowany do pustego przed wykonaniem zestawów testów.
# 8) xdescribe : Ta konstrukcja służy do wyłączania pakietów oprogramowania. Po prostu mówi biegaczowi testów, aby pominął zestaw testów, a zatem jego wynik nie jest wyświetlany i uwzględniany.
# 9) trafić : Ta konstrukcja jest używana do wskazania specyfikacji w zestawie jako oczekującej specyfikacji. Oczekująca specyfikacja to specyfikacja, która nie zostanie uruchomiona, ale jej nazwy zostaną wyświetlone w wyniku testu jako oczekujące.
Ponadto, jeśli w dowolnej specyfikacji zostanie wywołana funkcja oczekująca, wówczas specyfikacja zostanie oznaczona jako oczekująca specyfikacja. Każda specyfikacja zadeklarowana bez treści funkcji jest również oznaczana jako oczekująca.
# 10) spyOn : Ten konstrukt służy do stworzenia szpiega Jasmine. Szpiedzy to kpiny. Mocks to fałszywe obiekty stworzone w celu przedstawienia lub naśladowania rzeczywistego obiektu. Makiety są wymagane, aby uniknąć kosztów ogólnych tworzenia rzeczywistego obiektu, który reprezentują.
qa pytania do rozmowy kwalifikacyjnej dla doświadczonych
Istotą testowania jednostkowego kodu jest sprawdzenie, jak funkcja zachowuje się w kilku warunkach niezależnych od innych jednostek podłączonych lub będą do niej podłączone.
W związku z tym przeprowadzamy testy jednostkowe front-end, aby zobaczyć, jak jednostka front-endu naszego produktu będzie zachowywać się niezależnie od innych jednostek front-end, które będą do niego podłączone lub są do niego podłączone.
Podczas tego testu wywołujemy różne argumenty i funkcje, które mogą być zależne od innych funkcji i obiektów, takich jak połączenia sieciowe, źródła danych i pliki.
Aby spełnić te zależności (abyśmy mogli przeprowadzać testy jednostkowe front-end), istnieje potrzeba udostępnienia wymaganych zasobów. Dlatego stosujemy makiety, aby naśladować obiekty ze świata rzeczywistego i uniknąć kosztów ogólnych związanych z ich tworzeniem.
Zauważ, że na prostym poziomie spyOn służy do sprawdzania, czy funkcja zależna jest rzeczywiście wywoływana, a ta zależna funkcja może być po prostu prostą funkcją zdefiniowaną na obiekcie, który szpiegujemy.
Funkcja spyOn przyjmuje dwa parametry: szpiegowany obiekt i funkcję zależności, którą zawiera, która jest sprawdzana, aby upewnić się, że nasza funkcja ją wywołuje.
Szpiedzy istnieją w zestawie lub specyfikacji, w której jest zdefiniowany. Po wykonaniu pakietu lub specyfikacji szpieg przestaje istnieć.
# 11) createSpy: Konstrukcja ta służy temu samemu celowi co spyOn, ale różnica polega na tym, że ta funkcja umożliwia zastąpienie funkcji zależnej fałszywą na potrzeby testowania.
Dlaczego muszę to zrobić? Jest to przydatne, gdy pierwotna zależność jest również zależna od innych zasobów, które nie są dostępne w kontekście testu.
Dostęp do tej funkcji uzyskuje się za pomocą obiektu Jasmine z kropką, tj. Jasmine.createSpy (parametry). Pobiera tylko jeden parametr, którym jest ciąg znaków reprezentujący nazwę zależności, dla której tworzymy makietę.
Zwróć uwagę, że po utworzeniu szpiega, szpieg pierwszego połączenia zwraca wartość niezdefiniowaną, ponieważ przyjmuje się, że pierwsze połączenie jest jego szkoleniem. Następnie po kolejnych wywołaniach funkcja zwraca rzeczywistą wartość. Zobacz więcej szczegółów, gdy przyjrzymy się temu poniżej.
Podwójna funkcja testu Jasmine
Konstrukcje spyOn i createSpy umożliwiają tworzenie mocków (dla zależności). To nic innego jak testowanie dwóch funkcji w jednym teście, stąd stwierdzenie „test podwójnej funkcji”.
Innym słowem, którego można użyć w odniesieniu do mocków, jest „stubs”.
Spy Matchers: Istnieje kilka dopasowań, które zaspokajają potrzebę interakcji ze szpiegami. Zawierają: „ToHaveBeenCalled” i „toHaveBeenCalledWith” .
-
- toHaveBeenCalled : Jest to używane w specyfikacji, aby określić, że została wywołana szpiegowana zależność.
- toHaveBeenCalledWith : Jest to używane w specyfikacji, aby określić, że szpiegowana zależność została wywołana z określonym zestawem parametrów.
Odwiedzić tutaj aby uzyskać szczegółowy opis wszystkich konstrukcji Jasmine.
Dwa sposoby użycia Jasmine
Istnieją dwa sposoby pisania testów Jasmine. Jednym z nich jest użycie Jasmine jako samodzielnej dystrybucji za pośrednictwem specRunner, a drugim jest użycie Jasmine z testowym runnerem.
najlepsze oprogramowanie do klonowania dla systemu Windows 10
Najpierw przyjrzyjmy się uruchomieniu testów Jasmine za pomocą specRunner.
Jak korzystać z samodzielnej dystrybucji Jasmine?
Kliknij tutaj , a następnie pobierz samodzielną dystrybucję, klikając Wolnostojący jaśmin .
Rozpakuj plik do folderu projektu. Odkryjesz, że dodaje te katalogi do katalogu projektu: lib, src i spec; a także dodaje te pliki: specRunner.html i MIT.LICENSE.
Katalog lib zawiera bibliotekę Jasmine, która wykonuje testy zawarte w plikach testowych dodanych do pliku specRunner.html. Plik specRunner.html umożliwia uruchomienie testu i wyświetlenie wyniku w przeglądarce w formacie strony internetowej, a nie w oknie konsoli.
Katalog src zawiera zewnętrzne kody źródłowe, a katalog spec zawiera pliki testowe napisane przy użyciu zestawów testów Jasmine. Domyślnie możesz zobaczyć kilka zestawów testów i plików w katalogach, ale nie będziemy ich używać, napiszemy własne testy w naszych następnych tutorialach.
Używanie Jasmine z biegaczem testowym
Jest to drugi sposób korzystania z Jasmine, w którym konfigurujesz program uruchamiający testy, taki jak Karma, i podajesz do niego plik źródłowy i plik specyfikacji testów, aby uruchomić testy.
Następnie możesz wyświetlić wyniki i wygenerować raporty za pomocą Stambułu lub opublikować wyniki testów na stronie coveralls.io.
Wprowadzenie do Jasmine-Jquery
Jasmine-Jquery to pakiet węzłów, który pomaga w testowaniu kodów interfejsu użytkownika zbudowanych za pomocą jquery. W pewnym sensie rozszerza ramy Jasmine, aby dobrze pasowały do testów front-endowych Jquery.
Rozszerzenia, które dodaje do frameworka Jasmine, obejmują:
- Zestaw niestandardowych dopasowań dla środowiska Jquery, takich jak toBeChecked, toBeDisabled, toBeEmpty itp.
- Interfejs API do obsługi poprawek HTML, CSS i JSON w naszych specyfikacjach.
Teraz pytanie brzmi „co to jest API?” API (interfejs programowania aplikacji) to interfejs zapewniający dostęp do pewnych funkcji, których utworzenie od podstaw może wymagać czasu i zasobów.
Kolejne pytanie brzmi: czym są urządzenia? Fixture to predefiniowane stany obiektu, które zwykle tworzymy podczas pisania testów, aby ustalić punkt odniesienia (dobrze znane i ustalone środowisko), w którym testy są uruchamiane, aby wyniki były powtarzalne.
Widzieć tutaj aby uzyskać więcej informacji na temat niestandardowych dopasowań i interfejsów API.
Wniosek
W tym samouczku staraliśmy się zrozumieć, czym jest framework testowy i przedstawiliśmy Jasmine jako framework testowy JavaScript. Przyjrzeliśmy się różnym konstrukcjom Jasmine, których można użyć do napisania specyfikacji testowych, i ostatecznie wprowadziliśmy Jasmine-Jquery, który jest pakietem opartym na węzłach, który rozszerza Jasmine, aby móc testować aplikacje Jquery.
Dania na wynos
- Struktura testowa to zestaw programów lub pakietów, które ułatwiają testowanie oprogramowania w celu zapewnienia jakości tworzonego oprogramowania.
- Jasmine to behawioralne narzędzie programistyczne, które zapewnia konstrukcje ułatwiające pisanie specyfikacji testów dla aplikacji JavaScript.
- Programowanie sterowane testami to podejście programistyczne, w którym najpierw piszemy testy, a następnie je uruchamiamy. Każdy test kończy się niepowodzeniem przy pierwszym wykonaniu, ponieważ funkcja, której używa, nie została jeszcze napisana. Następnie piszemy funkcje i ponownie uruchamiamy testy. Tutaj niektóre testy kończą się niepowodzeniem, a inne przechodzą. Następnie kontynuujemy refaktoryzację kodu, aż wszystkie testy przejdą.
- Podejście programistyczne oparte na zachowaniu to podejście programistyczne, w którym testy są pisane w celu upewnienia się, że funkcje oprogramowania zachowują się zgodnie z oczekiwaniami wszystkich interesariuszy.
- Jasmine-Jquery to pakiet węzłów, który pomaga w testowaniu kodów interfejsu użytkownika zbudowanych za pomocą Jquery.
Następny samouczek
W naszym nadchodzącym samouczku zbadamy sposoby wykorzystania tych dwóch narzędzi (Jasmine i Karma) do napisania specyfikacji testowych dla typowego projektu. Zobaczylibyśmy również, jak korzystać z innych narzędzi, takich jak gulp, browserify itp., Które są wymagane do uruchomienia i uruchomienia naszych testów.
POPRZEDNIA samouczek | NEXT Tutorial
rekomendowane lektury
- 8 Narzędzia i struktury testowe oparte na najlepszym zachowaniu (BDD)
- W jaki sposób testerzy są zaangażowani w techniki TDD, BDD i ATDD
- TDD Vs BDD - Analiza różnic na przykładach
- Framework BDD (Behavior Driven Development): kompletny samouczek
- Jak napisać dokument dotyczący strategii testów (z przykładowym szablonem strategii testów)
- 10 najlepszych narzędzi do testowania API w 2021 roku (narzędzia testowe SOAP i REST API)
- Samouczek testowania interfejsu API: kompletny przewodnik dla początkujących
- Python DateTime Tutorial z przykładami