wiremock tutorial introduction wiremock
Овај уводни видео водич ће објаснити карактеристике Виремоцка и како покренути Виремоцк као самостални сервер и као део ЈУнит тестова:
У овом упутству ћемо покрити основне концепте и детаље око Виремоцк алата. Може се користити као самостални ХТТП сервер, као и у оквиру ЈУнит тестова према захтевима.
Ово је алат који се често користи јер је отвореног кода и има велику заједницу сарадника. Она спада у категорију алата за виртуелизацију услуга.
Шта ћете научити:
Шта је Виремоцк?
Једноставно речено, Виремоцк је подругљива поставка за интеграционе тестове. То је једноставно лажни сервер који је високо подесив за враћање очекиваног одговора на дати захтев.
Широко се користи током развоја и што је још важније током тестирања интеграције, док систем или услуга разговарају са једном или више спољних или унутрашњих зависности / услуга.
Покушајмо да разумемо више о интеграционом тестирању уопште и да упознамо како Виремоцк може помоћи да се превазиђу ти изазови и олакша нам живот.
Генерално, када дође реч интеграција, оно што нас погађа је крај до краја интеграција између два комуникациона система. Сада, погледајмо то из перспективе апликације која се тестира која користи неку спољну услугу да би обавила посао.
На пример, претпоставимо да градимо апликацију за онлајн путовање или систем издавања карата и да имамо модул за проверу ПНР статуса, који погађа спољни АПИ који пружају Индијске железнице.
Сада, како можемо да тестирамо интеграцију наше апликације са спољним АПИ-јевима?
Постоје 2 начина за то:
- Први, је Унит тест приступ, где заустављамо интерфејс који је обезбеђен (или је направљен у кући), тако да наш систем тестира / валидира табани или лажни одговор чак и пре него што погоди спољни АПИ. Ово није ништа друго до јединични тест којим се покушава исмевати спољна зависност.
- Друго је тестирање екстерних зависности са неким тест окружењем (или стварним производним окружењем). Међутим, постоји неколико изазова са таквим приступом који су поменути у наставку:
- Спољни АПИ системи можда нису увек доступни. тј. Ми се у великој мери ослањамо или зависимо од спољних система и сваки застој тамо утицаће на наше тестове и индиректно на процес развоја / објављивања.
- Друго, спољни АПИ-ји могу или не морају имати тест окружење. На пример, АПИ за проверу ПНР статуса може увек захтевати стварне ПНР бројеве за дохваћање и враћање одговора.
- Пуно пута постоје трошкови који утичу на приступање АПИ-ју. На пример, претпоставимо да АПИ за проверу ПНР наплаћује 100 Рс за сваких 1000 захтева. Како се интеграциони тестови обично изводе током сваке регресије (и најчешће са сваким урезивањем), можда неће бити исплативо решење ако се погоди такав АПИ који нас кошта чак и за потребе тестирања.
- Спољни АПИ није могуће конфигурисати да враћа жељени одговор. Чак и ако је могуће, мораћете да направите пуно тест података да бисте обезбедили различите одговоре за различите улазе захтева.
На пример, желите да тестирате сценарије грешака као што АПИ враћа различите статусне кодове за различите типове података. Сада, пошто одговор није под нашом контролом, мораћемо да створимо више скупова података како бисмо потврдили различите могуће сценарије или исходе.
Хајде да разумемо ове концепте уз помоћ доњег дијаграма.
Овде упоређујемо оба приступа тестирања интеграције, тј. Без лажног сервера користећи стварну имплементацију спољне зависности и помоћу лажног сервера (Виремоцк) који исмева одговоре на захтеве примљене за зависност.
У потоњем случају, то у великој мери смањује зависност и ослањање на стварну имплементацију зависности и даје пуно могућности конфигурације без угрожавања квалитета и распореда испоруке.
Како Виремоцк одговара на дати захтев?
Као што знамо, Виремоцк је програмски Моцк сервер, а начин на који одговара на дати захтев је чувањем свих релевантних мапирања (или исмеваних одговора) у фасцикли која се назива „мапирање“
Постоји компонента подударања Виремоцк која подудара долазне захтеве са ускладиштеним мапирањима и ако се врати успешно подударање, прво такво подударање се враћа као одговор на дати захтев.
У случају да користите самосталну верзију Виремоцк-а, након што покренете Виремоцк сервер, видећете фасциклу мапирања која ће бити креирана у директоријуму локације Виремоцк за инсталирање / јар.
Видео лекције: Увод у Виремоцк алат
најбоља апликација за снимак екрана за Виндовс 10
Како се користи Виремоцк?
Сада да видимо како можемо да користимо овај алат са нашим тестовима интеграције.
Може се користити на следеће начине.
Самостални Виремоцк сервер
Као самостални сервер, можете једноставно створити једноставну Јава апликацију са зависношћу Мавен / Градле за Виремоцк и задржати је као покренут процес.
Ово је добра алтернатива када желите да самостални сервер хостујете на некој машини и користите га као један сервер за ругање за цео пројекат или тим. У самосталном режиму овај алат се такође може извршити преузимањем доступне самосталне тегле овде и једноставно пустите теглу.
На пример, претпоставимо да желите да примените своју самосталну инстанцу Виремоцк на неком серверу у облаку или на локалном серверу, онда можете једноставно да покренете ову јар и користите системску ИП како бисте је користили као хостовану услугу.
Да видимо неке кораци за покретање овог у самосталном режиму (и конфигурисање различитих ствари као што су портови, мапирање мапа итд.)
# 1) Покрените Виремоцк јар са терминала (или командне линије за кориснике Виндовс-а) као и било коју другу ЈАР датотеку (из директоријума за инсталирање Виремоцк јар-а).
java -jar wiremock-standalone-2.25.1.jar
#два) Подразумевано, Виремоцк ради на лоцалхост: 8080 (ако је порт бесплатан за употребу, горенаведена команда ће покренути Виремоцк сервер у самосталном режиму) и видећете излаз као испод.
# 3) Сада када се сервер покрене, можете посетити било коју УРЛ адресу на лоцалхост: 8080
На пример, хттп: // лоцалхост: 8080 / гет / усер / 1 - Како се тренутно не подмећу, добићете одговор као што је приказано у наставку.
# 4) Покушајмо сада да подесимо једноставан квар / лажни назив за овај УРЛ и покушајмо поново да вратимо УРЛ. Затим ћемо потврдити да погодак исте УРЛ адресе сада враћа исмевани одговор.
curl -X POST --data '{ 'request': { 'url': '/get/user/1', 'method': 'GET' }, 'response': { 'status': 200, 'body': 'Here it is!
' }}' http://localhost:8080/__admin/mappings/new
Покушајмо прво да разумемо овај ЦУРЛ захтев:
- Израђујемо захтев за ЦУРЛ ПОСТ на хттп: // лоцалхост: 8080 / __ админ / маппингс / нев - Сада је ово место на којем ће се сва мапирања чувати за Виремоцк сервер који смо извршили / покренули путем ЈАР датотеке.
- У захтеву Цурл дефинишемо параметре захтева попут - УРЛ и метод захтева заједно са телом одговора у одељку „одговор“. То једноставно подразумева да сваки пут када ГЕТ захтев уђе са УРЛ / гет / усер / 1 онда одговори са наведеним телом одговора.
# 5) Једном када се постави упецани одговор (уз помоћ горенаведеног захтева за увијање), онда можемо покушати да притиснемо УРЛ и видимо да ли нам се враћа запечени одговор из Виремоцка.
Покушајмо да погодимо ову УРЛ адресу у прегледачу - хттп: // лоцалхост: 8080 / гет / усер / 1
Ако је мапирање успешно постављено, требали бисте добити одговор као што је приказано доле:
Уз ЈУнит тестове као конфигурацију правила ЈУнит
Виремоцк сервер се може користити са ЈУнит тестовима као подешавање ЈУнит правила. Овим ЈУнит брине о Виремоцк животном циклусу тј. Виремоцк се покреће и зауставља.
КА водећи интервју и питања и одговори пдф
Углавном се користи у подешавањима где желите да покренете и зауставите сервер након сваког теста.
Ово има своје предности изоловања и има висок степен конфигурабилности за разлику од самосталног подешавања где више људи може на крају да користи исти сервер и пређе преко међусобно закрњелих одговора.
Погледајмо радни пример овог приступа:
# 1) Направите ЈУнит правило за Виремоцк сервер. Овај корак је у основи сличан кораку за подешавање теста где говоримо покретачу ЈУнит-а да инстанцира Виремоцк сервер пре сваког теста и заустави сервер након сваког теста.
То такође значи да ће ЈУнит руннер водити рачуна о покретању и заустављању Виремоцк сервера, а да то изричито не ради.
@Rule public WireMockRule wm = new WireMockRule(wireMockConfig().port(8080));
#два) Сада ћемо написати наш тест где ћемо прво створити нашег клијента (користећи окХттп) за извршавање захтева према жељеној крајњој тачки.
// execute request through http client OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url('http://localhost:8080/test/abc') .get() .build();
# 3) Али, овде можете приметити да још увек нисмо поставили ниједан клат који се враћа за нашу инстанцу Виремоцк. тј. горе наведени клијент ће затражити УРЛ хттп: // лоцалхост: 8080 / тест / абц који нема ниједан конфигурисан стуб. У овом случају, Виремоцк сервер ће вратити 404 нема садржаја.
# 4) Сада да бисмо поставили клип за горњи УРЛ за нашу инстанцу сервера Виремоцк, мораћемо да позовемо статичке методе клатка Виремоцк-а како је приказано у наставку.
private void configureStubs() { configureFor('localhost', 8080); stubFor(get(urlEqualTo('/test/abc')) .willReturn(aResponse().withBody('Test success!'))); }
Овде можете видети да смо користили неколико статичких метода попут цонфигуреФор, стубФор итд. Све ове методе део су Виремоцк Јава библиотеке. (Ове методе детаљно ћемо размотрити у следећем упутству / одељцима)
# 5) Сада када је корак конфигурације завршен, можемо једноставно извршити захтев преко клијента и потврдити одговор (у зависности од тога шта је конфигурисано за враћање клица кроз Виремоцк)
Да резимирамо, ево како би изгледао читав узорак кода:
public class WiremockJunitTest { @Rule public WireMockRule wm = new WireMockRule(wireMockConfig().port(8080)); @Test public void assertWiremockSetup() throws IOException { // Arrange - setup wiremock stubs configureStubs(); // execute request through the http client OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url('http://localhost:8080/test/abc') .get() .build(); // Act - call the endpoint Response response = client.newCall(request).execute(); // Assert - verify the response assertEquals('Test success!', response.body().string()); verify(exactly(1),getRequestedFor(urlEqualTo('/test/abc'))); } // configure stubs for wiremock private void configureStubs() { configureFor('localhost', 8080); stubFor(get(urlEqualTo('/test/abc')) .willReturn(aResponse().withBody('Test success!'))); } }
Потребне зависности
Доступан је као:
- Самостални ЈАР који садржи само зависност од Виремоцка.
- Масна тегла која садржи Виремоцк и све његове зависности.
Оба укуса су доступна у зависности од Градле и Мавен. Више детаља доступно је у званичном складишту Мавен овде
Видео лекција: Виремоцк са ЈУнит тестом
Закључак
У овом упутству смо прошетали кроз основне карактеристике Виремоцк-а и видели како се може покренути као самостални сервер и као део ЈУнит тестова користећи ЈУнит правила.
Такође смо се укратко дотакли и запињања и детаљно ћемо га обрадити у следећем упутству.
СЛЕДЕЋА Лекција
Препоручено читање
- Увод у Мицро Фоцус ЛоадРуннер - Тестирање оптерећења помоћу ЛоадРуннер водича бр. 1
- Водич за Нгрок: Кратки увод у инсталацију и подешавање
- Водич за ТестНГ: Увод у ТестНГ Фрамеворк
- Увод у Селениум ВебДривер - Водич за селен бр. 8
- Увод у програмски језик Јава - Видео водич
- Питхон процес увођења и инсталације
- Шта је Уник: Кратки увод у Уник
- Водич за Неолоад: Увод у Неолоад, преузимање и инсталација