Jak testować wywołania API

Zdjęcie Robin Jonathan Deutsch na Unsplash

Cześć wszystkim, ostatnio widziałem kilka pytań dotyczących testowania w ekosystemie JavaScript. Oto niektóre pytania:

  • Jak przetestować wywołania API?
  • Jak przetestować axios?
  • Jak przetestować wywołania API uruchomione z hooka useEffect?
  • Jak przetestować wywołania API z React Query?

Scenariusz

Wyobraźmy sobie, że mamy komponent, który będzie uruchamiał żądanie API, korzystając z useEffectpodpięcia lub useQueryniestandardowego podpięcia. Po otrzymaniu danych niszczymy z nich nazwę i renderujemy. Oto możliwa realizacja

Teraz typowym sposobem na przetestowanie tego byłoby wyrenderowanie naszego komponentu i oczekiwanie, aż nazwa zwrócona przez wywołanie API zostanie wyświetlona na ekranie. Korzystając z React Testing Library, oczekiwany test powinien wyglądać następująco:

Teraz pytanie brzmi, jak upewnić się, że żądania w naszych testach zwracają oczekiwane dane?

Korzystanie z adaptera axios-mock-adapter

axios-mock-adapterto pierwsze rozwiązanie. Pozwala na kpiny z axios, jednocześnie dając bardziej czytelną składnię do jawnego zadeklarowania tego, co chcesz zrobić. W poniższym przykładzie pobieramy odwołanie do axios i tworzymy nową MockAdapter instance. Using this instance, we then use themetodę onGet`, aby upewnić się, że kiedy odpalimy żądanie GET do naszego oczekiwanego adresu URL, zwrócimy żądane dane.

Ręczne kpienie z axiosów

Możesz użyć Jest do samodzielnego wyśmiewania axiosów i unikania instalowania zewnętrznych bibliotek. W poniższym podejściu używamy jest.mockdo mockowania axios, a następnie w naszym teście mockujemy implementację metody get, aby zwrócić nasze oczekiwane dane dla oczekiwanego adresu URL.

Jeśli nie podoba ci się podejście, możesz utworzyć axios.jsplik w __mocks__katalogu i dodać tam następujący fragment.

Kiedy uruchomisz swój test, Jest automatycznie pobierze ten plik i udaje ci axios.

Korzystanie z MSW

MSW zmieniło sposób, w jaki wszystko testuję. Mimo że mamy wszystkie inne podejścia, o których wspomniałem powyżej, utrzymywanie makiet może szybko eskalować i po pewnym czasie otrzymasz ich kilka. Aby zaoszczędzić czas i scentralizować wszystko, używam MSW.

W tym scenariuszu wszystko, co musimy zrobić, to utworzyć procedurę obsługi dla naszego żądania, która zwraca dane, których oczekujemy. Następnie albo dodajemy procedurę obsługi do naszej listy programów obsługi, albo wywołujemy server.usew naszym teście, aby przesłonić nasze funkcje obsługi .

Jeśli chcesz dowiedzieć się więcej o MSW, przeczytaj mój wpis na blogu o tym.

Podsumowując

Jak widać, podczas testowania wywołań API istnieje kilka opcji, z których możesz skorzystać. Chociaż teraz wolę używać MSW, w przeszłości korzystałem ze wszystkich innych opcji.

Mam nadzieję, że ten wpis na blogu okazał się przydatny. Czekajcie na więcej i do zobaczenia następnym razem!

Pierwotnie opublikowane pod adresem https://www.danieljcafonso.com .

Suggested posts

Unikanie niszczycielskich konsekwencji udaru mózgu: nauka z rodzinnej podróży.

Unikanie niszczycielskich konsekwencji udaru mózgu: nauka z rodzinnej podróży.

Wstęp Udar to nagły przypadek medyczny, który może dotknąć każdego w dowolnym momencie. Występuje, gdy przepływ krwi do części mózgu zostaje zakłócony, co prowadzi do nagłej utraty funkcji mózgu.

Jest — potężny framework do testowania JavaScript

Jest — potężny framework do testowania JavaScript

Testowanie jest istotną częścią tworzenia oprogramowania. Zapewnia, że ​​kod jest niezawodny, działa zgodnie z oczekiwaniami i zmniejsza prawdopodobieństwo błędów.

Related posts

Tworzenie bezpiecznego środowiska pracy

Tworzenie bezpiecznego środowiska pracy

„Będzie mnie chronił, gdy będę w niebezpieczeństwie. Ukryje mnie w swoim namiocie.

Czy sztuka jest kiedykolwiek apolityczna?

Czy sztuka jest kiedykolwiek apolityczna?

Wczoraj zamknęliśmy drzwi tegorocznego Konkursu Piosenki Eurowizji błyskotliwym, chaotycznym wielkim finałem, w którym szwedzka piosenkarka Loreen zabrała do domu trofeum, stając się pierwszą kobietą, która wygrała dwa razy i przywracając koronę Szwecji 50 lat po tym, jak ABBA wygrała konkurs z „Waterloo”. Stali się jednym z największych zespołów w kanonie muzyki pop.

Ponowne przemyślenie mediów: pięć prawd McChesneya i przyszłość komunikacji

W dzisiejszym hiperpołączonym świecie systemy medialne odgrywają kluczową rolę w kształtowaniu opinii publicznej, a co za tym idzie, w demokratycznym procesie decyzyjnym. W swojej dogłębnej analizie ekonomii politycznej komunikacji uczony Robert McChesney kwestionuje konwencjonalną wiedzę i przedstawia to, co nazywa „pięcioma prawdami” o mediach.

Rewolucja w miejscu pracy: najlepsi eksperci omawiają pracę hybrydową i zdalną

Rewolucja w miejscu pracy: najlepsi eksperci omawiają pracę hybrydową i zdalną

W dzisiejszym szybko zmieniającym się krajobrazie biznesowym koncepcja pracy hybrydowej i zdalnej nabrała bezprecedensowego rozpędu. Ponieważ firmy wciąż dostosowują się do zmieniających się potrzeb i oczekiwań swoich pracowników, eksperci z różnych dziedzin zebrali się, aby omówić korzyści, wyzwania i przyszłość tego transformacyjnego sposobu pracy.