Powrót do: Playwright Elements – Kluczowe koncepcje automatyzacji testów
Czym jest mockowanie?
Prezentacja
Czym jest mock?
Mock to w prostych słowach “sztuczna wersja” jakiegoś elementu w systemie, który symuluje jego zachowanie. Jest to obiekt lub funkcja stworzona specjalnie po to, aby zastąpić prawdziwą zależność, np. serwer API, bazę danych czy inną funkcjonalność, której działanie trudno lub nieopłacalnie testować w normalnych warunkach.
Mock może:
- Symulować odpowiedzi
Na przykład, zamiast rzeczywistego serwera zwracać określone dane, jakby pochodziły z prawdziwego API. - Śledzić wywołania
Możesz sprawdzić, czy i jak dana funkcja była wywołana (np. ile razy, z jakimi argumentami). - Symulować błędy
Umożliwia sprawdzenie, jak aplikacja reaguje na różne problemy, np. brak połączenia z serwerem.
Czym jest mockowanie?
Mockowanie to proces tworzenia i używania mocków podczas testowania oprogramowania. Polega na zastępowaniu prawdziwych zależności (np. baz danych, serwerów, zewnętrznych usług) sztucznymi wersjami, które symulują ich działanie w określony sposób.
Dlaczego mockujemy?
- Testowanie w izolacji
Możesz skupić się na jednym fragmencie kodu, bez wpływu innych elementów systemu. - Symulowanie różnych scenariuszy
Na przykład: co się stanie, jeśli serwer zwróci błąd? - Oszczędność czasu i zasobów
Testy są szybsze, bo nie musisz uruchamiać prawdziwych zależności (np. serwera API).
Kiedy warto stosować mockowanie?
Kiedy powinniśmy raczej unikać mockowanie?
Dla zainteresowanych – Mock a Stub, Fake, Spy, Dummy
Stub, Mock, Fake, Spy, Dummy to różne rodzaje “fałszywych” obiektów używanych w testowaniu, które symulują zachowanie prawdziwych zależności. Choć są podobne, różnią się funkcją i poziomem złożoności.
Stub
Stub to prosty obiekt testowy, który dostarcza z góry określone odpowiedzi na zapytania. Nie śledzi, jak był używany ani nie testuje interakcji.
- Przykład: Tworzysz stub, który zawsze zwraca
{"name": "John", "age": 30}
. - Kiedy używać? Gdy chcesz zapewnić stabilne dane dla testów, ale nie interesuje Cię, czy metoda była wywołana lub jakimi argumentami.
Mock
Mock to bardziej zaawansowany obiekt, który symuluje zachowanie, ale dodatkowo może śledzić interakcje – np. ile razy został wywołany, z jakimi argumentami, czy w odpowiedniej kolejności.
- Przykład: Sprawdzasz, czy metoda
saveUser()
została wywołana oraz jakie dane zostały przekazane. - Kiedy używać? Gdy chcesz przetestować interakcję między komponentami.
Fake
Fake to uproszczona implementacja rzeczywistego obiektu, która działa podobnie do oryginału, ale jest prostsza i często działa tylko w pamięci.
- Przykład: Fake bazy danych przechowuje dane w tablicy w pamięci zamiast w prawdziwej bazie SQL.
- Kiedy używać? Gdy chcesz mieć działającą wersję zależności, ale bez dużego narzutu.
Spy
Spy to coś pomiędzy stubem a mockiem. Śledzi wywołania jak mock, ale pozwala też wywołać prawdziwą implementację funkcji (jeśli chcesz).
- Przykład: Śledzisz, ile razy metoda
calculateTotal()
została wywołana, ale chcesz, aby działała zgodnie z jej rzeczywistym kodem. - Kiedy używać? Gdy chcesz monitorować, co dzieje się z metodą, ale jednocześnie chcesz, aby jej prawdziwe działanie było zachowane.
Dummy
Dummy to bardzo prosty obiekt, który istnieje tylko po to, aby wypełnić wymagane miejsce w kodzie – nie jest faktycznie używany w testach.
- Przykład: Jeśli funkcja wymaga obiektu użytkownika, ale jego właściwości nie są istotne w teście, możesz podać
new User("dummy")
. - Kiedy używać? Gdy potrzebujesz dostarczyć obiekt, ale jego zawartość lub zachowanie nie mają znaczenia dla testu.
Podsumowanie różnic
Typ | Działanie | Śledzi interakcje? |
---|---|---|
Stub | Zwraca z góry określone dane. | Nie |
Mock | Zwraca dane i sprawdza, jak obiekt był używany. | Tak |
Fake | Upraszcza prawdziwą implementację (działa jak oryginał, ale szybciej/prościej). | Nie |
Spy | Śledzi wywołania i ewentualnie korzysta z prawdziwej implementacji. | Tak |
Dummy | Obiekt tylko do wypełnienia wymagań (nieużywany w teście). | Nie |
Podsumowanie:
- Stub: Prosty dostawca danych.
- Mock: Tester interakcji.
- Fake: Uproszczony oryginał.
- Spy: Podglądacz rzeczywistej funkcji.
- Dummy: Obiekt zastępczy, który nie ma wpływu na działanie danego elementu.
Zewnętrzne linki i zasoby
- Nasz webinar o mockowniu: Playwright w akcji – testy GUI bez backendu. Przyspiesz testy z podstawami API i mockowaniem w Playwright (z TypeScript)
Kursanci Programu Automatyzacja z Playwright znajdą go na stronie 🔒 Webinar: Playwright w akcji
- Stub, Mock, Fake, Spy, Dummy: Test Double