{"id":29313,"date":"2020-06-30T08:43:48","date_gmt":"2020-06-30T06:43:48","guid":{"rendered":"https:\/\/nearshore-it.eu\/artykuly\/mockowanie-w-testach-nie-tylko-automatycznych\/"},"modified":"2024-09-25T12:37:38","modified_gmt":"2024-09-25T10:37:38","slug":"mockowanie-w-testach-nie-tylko-automatycznych","status":"publish","type":"post","link":"https:\/\/nearshore-it.eu\/pl\/artykuly\/mockowanie-w-testach-nie-tylko-automatycznych\/","title":{"rendered":"Mockowanie w testach (nie tylko) automatycznych"},"content":{"rendered":"\n<div class=\"table-of-contents\">\n    <p class=\"title\">Id\u017a do:<\/p>\n    <ol>\n                    <li><a href=\"#Czym-jest-mockowanie\">1.  Czym jest mockowanie?<\/a><\/li>\n                    <li><a href=\"#Zalety-mockowania\">2.  Zalety mockowania<\/a><\/li>\n                    <li><a href=\"#Przyk\u0142adowy-scenariusz\">3.  Przyk\u0142adowy scenariusz<\/a><\/li>\n                    <li><a href=\"#Dost\u0119pne-narz\u0119dzia\">4.  Dost\u0119pne narz\u0119dzia<\/a><\/li>\n                    <li><a href=\"#Mockowanie-w-praktyce\">5.  Mockowanie w praktyce<\/a><\/li>\n                    <li><a href=\"#Mockowanie-w-testach-manualnych\">6.  Mockowanie w testach manualnych<\/a><\/li>\n                    <li><a href=\"#Podsumowanie\">7.  Podsumowanie<\/a><\/li>\n            <\/ol>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"Czym-jest-mockowanie\">Czym jest mockowanie?<\/h2>\n\n\n\n<p><strong>Mockowanie to w\u0142a\u015bnie udawanie, symulowanie odpowiedzi jakiego\u015b serwisu, aby by\u0142a zgodna z naszymi oczekiwaniami.<\/strong> Czyli odawanie, \u017ce system, kt\u00f3ry dzia\u0142a, nie dzia\u0142a albo odwrotnie (np. testowanie obs\u0142ugi b\u0142\u0119d\u00f3w). Mo\u017cna te\u017c symulowa\u0107 konkretne odpowiedzi, aby sprawdzi\u0107, czy zwracane warto\u015bci s\u0105 przez nasz\u0105 aplikacj\u0119 poprawnie obliczane. W testach jednostkowych, gdzie mamy wi\u0119ksze pole do popisu, mockowa\u0107 mo\u017cna obiekty klas, z kt\u00f3rymi wchodzimy w interakcj\u0119. W testach end-to-end nie schodzimy do tego poziomu, wi\u0119c na potrzeby tego artyku\u0142u zajmiemy si\u0119 symulacj\u0105 odpowiedzi z serwis\u00f3w internetowych. A dlaczego warto stosowa\u0107 t\u0119 technik\u0119?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Zalety-mockowania\">Zalety mockowania<\/h2>\n\n\n\n<p>Zalet i zastosowa\u0144 mockowania jest wiele. Pozwala nam ono m.in.:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Zasymulowa\u0107 r\u00f3\u017cne warto\u015bci odpowiedzi (np. przetestowanie obs\u0142ugi timeout\u2019\u00f3w).<\/li>\n\n\n\n<li>Zasymulowa\u0107 sta\u0142e czasy odpowiedzi do wykrycia zmian w naszej aplikacji przez nieoczekiwan\u0105 obs\u0142ug\u0119 danej odpowiedzi.<\/li>\n\n\n\n<li>Sprawdzi\u0107 odporno\u015b\u0107 na downtime aplikacji zewn\u0119trznych spowodowany czy to b\u0142\u0119dem wyst\u0119puj\u0105cym w nowej wersji, awari\u0105 czy mo\u017ce tym, \u017ce w\u0142a\u015bnie jest ona instalowana.<\/li>\n<\/ul>\n\n\n\n<p>W korporacyjnym \u015bwiecie ASAP-\u00f3w mockowanie staje si\u0119 przydatnym narz\u0119dziem do omijania takich przeszk\u00f3d.<br>Nale\u017cy jednak mie\u0107 na uwadze, \u017ce pracuj\u0105c tylko z mockami, mo\u017cemy przeoczy\u0107 zmiany w mockowanych komponentach. Dlatego warto te\u017c sprawdza\u0107 pe\u0142n\u0105 integracj\u0119 end-to-end.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Przyk\u0142adowy-scenariusz\">Przyk\u0142adowy scenariusz<\/h2>\n\n\n\n<p>Teoretycznie mockujemy tylko to, co le\u017cy poza obszarem naszych dzia\u0142a\u0144. Je\u015bli jednak jaka\u015b cz\u0119\u015b\u0107 naszego systemu r\u00f3wnie\u017c zawiod\u0142a, to warto j\u0105 tymczasowo zmockowa\u0107, aby m\u00f3c przetestowa\u0107 dalsz\u0105 funkcjonalno\u015b\u0107. Wyobra\u017amy sobie taki scenariusz, w kt\u00f3rym nasz system sk\u0142ada si\u0119 z dw\u00f3ch komponent\u00f3w:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>serwer<\/strong><\/li>\n\n\n\n<li><strong>klient<\/strong><\/li>\n<\/ul>\n\n\n\n<p><strong>Problem<\/strong><br>Programi\u015bci komponentu serwera dokonuj\u0105 du\u017cych zmian, przez co jest on niestabilny w \u015brodowisku testowym. Programi\u015bci komponentu klienta pracuj\u0105 nad kluczow\u0105 dla biznesu zmian\u0105, kt\u00f3ra ma zosta\u0107 dostarczona w tym Sprincie.&nbsp; Niestety, ka\u017cde zapytanie klienta do serwera skutkuje b\u0142\u0119dem 503 i osi\u0105gni\u0119cie celu Sprintu wisi na w\u0142osku.<\/p>\n\n\n\n<p><strong>Rozwi\u0105zanie<\/strong><br>Wiemy, jakich odpowiedzi mo\u017cemy si\u0119 spodziewa\u0107 z serwera (przyk\u0142adowo, mamy nagrania ze \u015brodowiska produkcyjnego lub z poprzedniej, dzia\u0142aj\u0105cej wersji serwera albo posiadamy dokumentacj\u0119). Mo\u017cemy wi\u0119c zasymulowa\u0107 udzielanie przez serwer poprawnej odpowiedzi, co pozwala przetestowa\u0107 nasz komponent i dostarczy\u0107 cel Sprintu, wdra\u017caj\u0105c go w \u015brodowisku produkcyjnym (instalowany b\u0119dzie tylko nasz komponent). Oczywi\u015bcie warto te\u017c sprawdzi\u0107 pe\u0142n\u0105 integracj\u0119 (UAT\/PREPROD), gdy jest taka mo\u017cliwo\u015b\u0107. Dobr\u0105 praktyk\u0105 jest przeprowadzanie test\u00f3w integracji, aby sprawdzi\u0107, czy nasze mocki nie s\u0105 przestarza\u0142e. Zdarza si\u0119, \u017ce zostanie zainstalowana jaka\u015b zmiana, o kt\u00f3rej nie zostali\u015bmy poinformowani, a testy integracji daj\u0105 szans\u0119 takie zmiany wychwyci\u0107.<\/p>\n\n\n\n<p>Przeczytaj r\u00f3wnie\u017c: <a href=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/testy-e2e-cypress\/\" data-type=\"link\" data-id=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/testy-e2e-cypress\/\">Testy E2E- wprowadzenie do Cypress<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Dost\u0119pne-narz\u0119dzia\">Dost\u0119pne narz\u0119dzia<\/h2>\n\n\n\n<p>Aplikacji pozwalaj\u0105cych na mockowanie API rest jest mn\u00f3stwo i na pewno ka\u017cdy znajdzie co\u015b dla siebie. Ja chcia\u0142bym opisa\u0107 kilka z nich i pokr\u00f3tce wskaza\u0107 ich wady i zalety.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>SoapUI<\/strong> \u2013 narz\u0119dzie w wersji darmowej, w zupe\u0142no\u015bci wystarczy w wi\u0119kszo\u015bci sytuacji do test\u00f3w rozwijanej aplikacji. Posiada interfejs graficzny i w \u0142atwy spos\u00f3b mo\u017cna wyklika\u0107 interesuj\u0105ce nas mocki, co niestety jest tak\u017ce wad\u0105 tego rozwi\u0105zania (konieczno\u015b\u0107 klikania).<\/li>\n\n\n\n<li><strong>Postman<\/strong> \u2013 dzieli ten sam zestaw wad i zalet co SoapUI, jednak GUI mo\u017ce dla niekt\u00f3rych okaza\u0107 si\u0119 przyjemniejsze w obs\u0142udze. Do tworzenia mock\u00f3w wymaga jednak za\u0142o\u017cenia darmowego konta.<\/li>\n\n\n\n<li><strong>MockServer i WireMock<\/strong> \u2013 same w sobie nie posiadaj\u0105 GUI, jednak ich mo\u017cliwo\u015bci konfiguracji przerastaj\u0105 poprzednio opisane rozwi\u0105zania. Mo\u017cna je uruchomi\u0107 jako proces standalone lub podczas budowania projektu z testami automatycznymi. Oba s\u0105 darmowe i spe\u0142ni\u0105 wi\u0119kszo\u015b\u0107 oczekiwa\u0144 nawet najbardziej wymagaj\u0105cych u\u017cytkownik\u00f3w. WireMock charakteryzuje si\u0119 jednak lepsz\u0105 skalowalno\u015bci\u0105.<\/li>\n\n\n\n<li><strong>mocky.IO i beecepto.com<\/strong> \u2013 s\u0105 to rozwi\u0105zania webowe i o ile wyr\u00f3\u017cniaj\u0105 si\u0119 \u0142atwo\u015bci\u0105 obs\u0142ugi, o tyle posiadaj\u0105 pewn\u0105 znacz\u0105c\u0105 wad\u0119: znajduj\u0105 si\u0119 na odleg\u0142ym serwerze i czasy odpowiedzi oraz sama jego dost\u0119pno\u015b\u0107 mog\u0105 by\u0107 ograniczone.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Mockowanie-w-praktyce\">Mockowanie w praktyce<\/h2>\n\n\n\n<p>Przejd\u017amy zatem do praktyki. Na przyk\u0142adzie MockServera i Javy poka\u017c\u0119, <strong>jak skonfigurowa\u0107 przyk\u0142adowy mock bez napisania ani jednej linii kodu,<\/strong> a to przy pomocy Mavena.<\/p>\n\n\n\n<p>Aby skonfigurowa\u0107 Mock Server, wystarczy:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>doda\u0107 zale\u017cno\u015bci w pom.xml<\/li>\n<\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;dependency>\n&lt;groupld>org.mock-server&lt;\/groupld>\n&lt;artifactld>mockserver-netty&lt;\/artifactld>\n&lt;version>5.9.0&lt;\/version>\n&lt;\/dependency>\n&lt;dependency>\n&lt;groupld>org.mock-server&lt;\/groupld>\n&lt;artifactld>mockserver-client-java&lt;\/artifactld>\n&lt;version>5.9.0&lt;\/version>\n&lt;\/dependency><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>a tak\u017ce plugin, kt\u00f3ry nasz serwer uruchomi<\/li>\n<\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;plugin>\n&lt;groupld>org.mock-server&lt;\/groupld>\n&lt;artifactld>mockserver-maven-plugin&lt;\/artifactld>\n&lt;version>5.9.0&lt;\/version>\n&lt;configuration>\n&lt;serverPort>1080&lt;\/serverPort>\n&lt;logLevel>WARN&lt;\/logLevel>\n&lt;\/configuration>\n&lt;executions>\n&lt;execution>\n&lt;id>process-test-classes&lt;\/id>\n&lt;phase>process-test-classes&lt;\/phase>\n&lt;goals>\n&lt;goal>start&lt;\/goal>\n&lt;\/goals>\n&lt;\/execution>\n&lt;execution>\n&lt;id>verify&lt;\/id>\n&lt;phase>verify&lt;\/phase>\n&lt;goals>\n&lt;goal>stop&lt;\/goal>\n&lt;\/goals>\n&lt;\/execution>\n&lt;\/executions>\n&lt;\/plugin><\/pre>\n\n\n\n<p>Mo\u017cemy z tego wyczyta\u0107, \u017ce nasz serwer zostanie uruchomiony przez Maven na localhost:1080 w fazie process-test-classes i zatrzymany w fazie verify.<\/p>\n\n\n\n<p>Projekt budujemy za pomoc\u0105 polecenia:<\/p>\n\n\n\n<p><strong>mvn clean verify -Dmockserver.initializationJsonPath=src\/test\/resources\/REST\/mockserver\/initialize.json<\/strong><\/p>\n\n\n\n<p>I tu pojawia si\u0119 tajemniczy plik .json kt\u00f3ry zawiera ca\u0142\u0105 konfiguracj\u0119 zwi\u0105zan\u0105 z mockowanymi endpointami \u2013 czyli okre\u015blenie typ\u00f3w &nbsp;i parametr\u00f3w \u017c\u0105dan, a tak\u017ce odpowiedzi na te \u017c\u0105dania.<\/p>\n\n\n\n<p>U mnie jest to przyk\u0142ad dla kursu walut ze strony NBP, przyjmuj\u0105cy za \u017c\u0105danie GET na adresie <a href=\"http:\/\/api.nbp.pl\/api\/exchangerates\/tables\/A\/?format=json\" target=\"_blank\" rel=\"noopener\">http:\/\/api.nbp.pl\/api\/exchangerates\/tables\/A\/?format=json<\/a> i zwracaj\u0105cy odpowied\u017a z kodem 200 \u2013 OK, w formacie json, z kursem walutowym dla tajskiego bahta w tre\u015bci:<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter is-resized\"><img decoding=\"async\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/2020.06.30_graphic_3.png\" alt=\"mockowanie \" class=\"wp-image-28851\" style=\"width:1450px;height:auto\" title=\"\"><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Teraz ju\u017c wystarczy podmieni\u0107 adres naszego http:\/\/api.nbp.pl na http:\/\/localhost:1080 i cieszy\u0107 si\u0119 najni\u017cszym w historii kursem bahta tajskiego widocznego w naszych testach.<\/p>\n\n\n\n<p>Jak widzicie, konfiguracja nie jest trudna, nie wymaga pisania kodu, a kolejne mocki mo\u017cna dodawa\u0107, rozszerzaj\u0105c plik json.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Mockowanie-w-testach-manualnych\">Mockowanie w testach manualnych<\/h2>\n\n\n\n<p>Je\u015bli chcecie natomiast korzysta\u0107 z dobrodziejstw mockowania w testach manualnych, polecam darmow\u0105 wersj\u0119 narz\u0119dzia SoapUI. Posiada interfejs graficzny dzi\u0119ki czemu wyklikanie potrzebnej konfiguracji nie sprawia wi\u0119kszych problem\u00f3w.<\/p>\n\n\n\n<p>Poni\u017cej przyk\u0142ad dla naszego NBP:<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/2020.06.30_JPro_screen_1.jpg\" alt=\"mockowanie\" class=\"wp-image-28854\" title=\"\"><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Po uruchomieniu aplikacji tworzymy nowy projekt. Klikamy odpowiednio<strong> File<\/strong> (1) i <strong>New SOAP Project<\/strong> (2)<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/2020.06.30_JPro_screen_2.jpg\" alt=\"Mockowanie\" class=\"wp-image-28855\" title=\"\"><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Nast\u0119pnie nadajemy mu adekwatn\u0105 nazw\u0119 (1) i klikamy<strong> OK.<\/strong><\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter is-resized\"><img decoding=\"async\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/2020.06.30_JPro_screen_3.jpg\" alt=\"mockowanie, new soap project\" class=\"wp-image-28856\" style=\"width:1450px;height:auto\" title=\"\"><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Na naszym nowo utworzonym projekcie klikamy <strong>PPM<\/strong> i wybieramy <strong>New REST MockService<\/strong> (2)<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter is-resized\"><img decoding=\"async\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/2020.06.30_JPro_screen_4.jpg\" alt=\"mockowanie\" class=\"wp-image-28857\" style=\"width:1450px;height:auto\" title=\"\"><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Nadajemy odpowiedni\u0105 nazw\u0119 (1) i zatwierdzamy, klikaj\u0105c <strong>OK.<\/strong><\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/2020.06.30_JPro_screen_5.jpg\" alt=\"mockowanie\" class=\"wp-image-28858\" title=\"\"><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Tu (1) widzimy, \u017ce nasz MockService dzia\u0142a na domy\u015blnym porcie 8080.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/2020.06.30_JPro_screen_6.jpg\" alt=\"mockowanie\" class=\"wp-image-28859\" title=\"\"><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Dodajemy do naszego serwisu akcj\u0119 odpowiadaj\u0105c\u0105 \u017c\u0105daniu http. Klikamy <strong>PPM<\/strong> w naszym serwisie (1) i wybieramy <strong>Add new mock action<\/strong> (2).<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/2020.06.30_JPro_screen_7.jpg\" alt=\"mockowanie\" class=\"wp-image-28860\" title=\"\"><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>W tym miejscu (1) wybieramy metod\u0119 <strong>GET\/POST\/PUT<\/strong> i wiele innych. Nas interesuje <strong>GET.<\/strong><\/p>\n\n\n\n<p>Podajemy te\u017c \u015bcie\u017ck\u0119 do API (2) i zatwierdzamy, klikaj\u0105c <strong>OK.<\/strong><\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/2020.06.30_JPro_screen_8.jpg\" alt=\"mockowanie\" class=\"wp-image-28861\" title=\"\"><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Skoro mamy zdefiniowane \u017c\u0105danie, to czas najwy\u017cszy na dodanie odpowiedzi. Klikamy <strong>PPM<\/strong> na \u017c\u0105daniu (1) i wybieramy <strong>New MockResponse<\/strong> (2).<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/2020.06.30_JPro_screen_9.jpg\" alt=\"mockowanie, soap\" class=\"wp-image-28862\" title=\"\"><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Odpowied\u017a te\u017c potrzebuje swojej nazwy. Wpisujemy j\u0105 (1) i zatwierdzamy, klikaj\u0105c <strong>OK.<\/strong><\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/2020.06.30_JPro_screen_10.jpg\" alt=\"mockowanie \" class=\"wp-image-28863\" title=\"\"><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>W naszej odpowiedzi dodajemy nag\u0142\u00f3wek (1) i wpisujemy <strong>Content-Type<\/strong> (2). Nie jest to konieczne, ale najlepiej doda\u0107 wszystkie nag\u0142\u00f3wki, jakie wyst\u0119puj\u0105 w faktycznej odpowiedzi serwera.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/2020.06.30_JPro_screen_11.jpg\" alt=\"mockowanie\" class=\"wp-image-28864\" title=\"\"><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Tutaj odpowied\u017a jest w formacie json, wi\u0119c uzupe\u0142niamy<strong> application\/json<\/strong> (1). W formatce poni\u017cej (2) wklejamy oczekiwane response body (to ten obiekt json, kt\u00f3ry normalnie zwraca serwer i kt\u00f3rym b\u0119dzie odpowiada\u0142 mock).<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/2020.06.30_JPro_screen_12.jpg\" alt=\"mockowanie\" class=\"wp-image-28865\" title=\"\"><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Zosta\u0142o nam ju\u017c tylko uruchomienie serwera. Klikamy dwukrotnie nasz <strong>MockService<\/strong> (1) i <strong>Start<\/strong> (2).<\/p>\n\n\n\n<p>Nasz serwer ju\u017c dzia\u0142a i je\u015bli wykonamy zapytanie pod adresem http:\/\/localhost:8080\/api\/exchangerates\/tables\/A\/, zobaczymy w logu (3) informacj\u0119 o powodzeniu tej operacji.<\/p>\n\n\n\n<p>Jak widzicie, w SoapUI trzeba si\u0119 troszeczk\u0119 wi\u0119cej naklika\u0107, ale za to jest to o wiele bardziej przyjazne dla os\u00f3b, kt\u00f3re dopiero stawiaj\u0105 pierwsze kroki w tym obszarze. Dodatkowo uzyskujemy serwer standalone.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Podsumowanie\">Podsumowanie<\/h2>\n\n\n\n<p>Mockowanie w testach to temat oczywi\u015bcie o wiele szerszy. Mam nadziej\u0119, \u017ce w tym kr\u00f3tkim artykule uda\u0142o mi si\u0119 zach\u0119ci\u0107 Was do sprawdzenia, jakie mo\u017cliwo\u015bci daje. Istnieje wiele darmowych aplikacji, kt\u00f3re u\u0142atwi\u0105 Wam wej\u015bcie w \u015bwiat mockowania, a ich obs\u0142uga jest zwykle bardzo intuicyjna.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mock (j. ang) \u2013 drwi\u0107, kpi\u0107, szydzi\u0107. Czasem zdarza si\u0119, \u017ce aplikacja, nad kt\u00f3rej integracj\u0105 pracujemy, nie dzia\u0142a akurat wtedy, kiedy potrzebujemy wykona\u0107 testy. Troch\u0119 tak, jakby sobie z nas drwi\u0142a. Jednak nie to b\u0119dzie tematem mojego artyku\u0142u. Mock w j\u0119zyku angielskim oznacza bowiem tak\u017ce co\u015b sztucznego, udawanego, imituj\u0105cego, i to w\u0142a\u015bnie ta definicja nas bardziej interesuje. Mockowanie, czyli udawanie, w testach pozwala ustrzec si\u0119 downtime\u2019\u00f3w aplikacji zewn\u0119trznych, ale tak\u017ce pomaga w tworzeniu przypadk\u00f3w testowych.<\/p>\n","protected":false},"author":150,"featured_media":29360,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"iawp_total_views":942,"footnotes":""},"categories":[1,582],"tags":[562],"offering":[522],"class_list":["post-29313","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-artykuly","category-technologie","tag-qa","offering-tech-blog"],"acf":[],"_links":{"self":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts\/29313","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/users\/150"}],"replies":[{"embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/comments?post=29313"}],"version-history":[{"count":8,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts\/29313\/revisions"}],"predecessor-version":[{"id":32824,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts\/29313\/revisions\/32824"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/media\/29360"}],"wp:attachment":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/media?parent=29313"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/categories?post=29313"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/tags?post=29313"},{"taxonomy":"offering","embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/offering?post=29313"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}