Co to jest Supertest?
SuperTest to biblioteka Node.js, która pomaga programistom i testerom testować interfejsy API. Rozszerza kolejną bibliotekę o nazwie superagent (klienta HTTP JavaScript dla Node.js i przeglądarki). Deweloperzy mogą używać SuperTest jako samodzielnej biblioteki lub z różnymi frameworkami testowymi JavaScript, takimi jak Mocha lub Jest.
Mocha
W tym wpisie wykorzystam do supertesta taki framework jak mocha.
Czym jest mocha? Jest to jeden z lepiej znanych frameworków testowych JavaScript. Mocha działa zarówno na Node.js, jak i w przeglądarce, dzięki temu jest przydatna do testowania funkcjonalności asynchronicznych. Jedną z fajnych rzeczy w Mocha jest to, że umożliwia pisanie testów w różnych stylach, takich jak BDD (it, describe itp.) i TDD (suite, test itp.).
Chai
Wykorzystamy także bibliotekę do asercji jaką jest Chai. Nie jest to niezbędna biblioteka do pisania testów, ale pozwoli nam w przejrzysty sposób weryfikować czy np. endpoint zwrócił nam określone rzeczy jakie chcieliśmy (expect).
Jak rozpocząć przygodę z Supertest?
W pierwszej kolejności musimy mieć zainstalowanego Nodejs. Gdy już to mamy to SuperTest jest dostępny w NPM. Możemy go zainstalować, wpisując w konsoli następujące polecenie:
I to jest wszystko czego będziemy potrzebowali aby rozpocząć przygodę z testami API.
Przykład API jakie wykorzystamy
W ramach przykładu posłużymy się moją ulubioną emulacją API czyli https://jsonplaceholder.typicode.com/ . Mamy tam endpoint /posts, który zwraca listę przykładowych postów.
Naszym zadaniem będzie napisanie takiego testu, który zweryfikuje czy otrzymaliśmy po wykonaniu zapytania GET na powyższy endpoint kod odpowiedzi równy 200. Dodatkowo musimy jeszcze zweryfikować czy została nam zwrócona tablica z postami. To do roboty!
Implementacja testu
Utwórzmy plik np. example.js i na początku dołączymy potrzebne zasoby/biblioteki, z których będziemy korzystali. W pierwszej kolejności jest to oczywiście supertest wraz z podanym baseUrl czyli głównym adresem pod którym wystawione jest API. W naszym przypadku będzie to https://jsonplaceholder.typicode.com 🙂
Kolejną bibliotekę, którą dołączymy jest Chai. Dzięki temu będziemy mogli używać metody expect pozwalającej zweryfikować kod odpowiedzi i zwrotkę z API.
W dalszej części utworzymy bardzo dobrze znany nam o ile mieliśmy styczność z testami automatycznym blok describe. Jest to blok, który będzie zawierał wszystkie kroki (it) w naszym teście. Taki blok zawiera główny, krótki opis na temat tego z czym związany jest ten test.
Kolejno tworzymy blok it, w którym przechowywany jest asynchroniczny kod odpowiedzialny za nasz test, który w ramach tego wpisu implementujemy.
Wewnątrz bloku it tworzymy zmienną response, w której będzie zwrócona odpowiedź z wykonanego zapytania. Do zmiennej response przypisujemy await request.get(„/posts”). Dzięki temu asynchronicznie wyzwolimy zapytanie metodą GET na endpoint /posts, bo to właśnie po odpytaniu jego otrzymamy listę postów.
Teraz nie pozostaje nam nic innego jak wykorzystać bibliotekę Chai i zweryfikować czy otrzymaliśmy kod odpowiedzi 200 oraz czy liczba zwróconych wpisów jest równa 100.
Całość implementacji powinna wyglądać następująco:
Uruchomienie testu
Mamy wszystko! Teraz, aby uruchomić test wystarczy, że wykonamy w terminalu polecenie npx mocha example.js . W rezultacie powinniśmy otrzymać taki rezultat jak poniżej.
Jeśli tak mamy to oznacza, że wszystko dobrze zrobiliśmy i zasłużyliśmy na chwilę przerwy 🙂
A już niedługo pojawią się kolejne wpisy związane z dziedziną automatyzacji testów.
Praktyczny kurs testowania oprogramowania
Jesteś na początku swojej drogi jako tester oprogramowania? W takim razie ten kurs jest przeznaczony dla Ciebie.
Automatyzacja z Typescript + WebdriverIO
Zostań testerem automatyzującym. W tym kursie nauczysz się automatyzować oprogramowanie za pomocą Typescript oraz WebdriverIO.
Jira od podstaw - zarządzanie projektami
Kurs związany z narzędziem Jira. Jeśli poszukujesz swojej pierwszej pracy jako tester oprogramowania to ten kurs będzie dla Ciebie idealny!
Postman od podstaw - testowanie REST API
Naucz się od podstaw aplikacji Postman i dowiedz się jak wygląda w praktyce testowanie REST API. Dedykowany kurs postman dla testerów.
Cypress od podstaw - Automatyzacja testów
Naucz się automatyzacji aplikacji webowych w najbardziej popularnym narzędziu do automatyzacji Cypress. W kursie wszystkiego nauczysz się od podstaw.
JavaScript od podstaw
Poznaj podstawy najpopularniejszego języka JavaScript. Kurs jest dedykowany dla osób, które chcą zostać webdeweloperem bądź testerem automatyzującym.