{"id":54167,"date":"2019-12-19T00:00:00","date_gmt":"2019-12-18T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/testmace-bystryj-start"},"modified":"2020-02-18T14:02:08","modified_gmt":"2020-02-18T11:02:08","slug":"testmace-bystryj-start","status":"publish","type":"post","link":"https:\/\/prohoster.info\/lv\/blog\/news\/testmace-bystryj-start","title":{"rendered":"TestMace. \u0100tra s\u0101k\u0161ana","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"TestMace. \u0100tra s\u0101k\u0161ana\" src=\"\/wp-content\/uploads\/2019\/12\/ca19545f1cc06814a69a6a3e6d9f3a5a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Sveiki visiem. M\u0113s pak\u0101peniski izejam no \u0113nas un turpin\u0101m rakstu s\u0113riju par m\u016bsu produktu. P\u0113c <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/458372\/\">iepriek\u0161\u0113j\u0101s<\/a><\/noindex> p\u0101rskata raksta m\u0113s sa\u0146\u0113m\u0101m daudz atsauksmju (galvenok\u0101rt pozit\u012bvu), ieteikumu un bug zi\u0146ojumu. \u0160odien m\u0113s par\u0101d\u012bsim <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\">TestMace<\/a><\/noindex> darba proces\u0101, un j\u016bs var\u0113siet nov\u0113rt\u0113t da\u017eas m\u016bsu lietotnes funkcijas. Lai lab\u0101k iepaz\u012btos, iesaku ieskat\u012bties m\u016bsu dokument\u0101cij\u0101, kas atrodama adres\u0113 <noindex><a rel=\"nofollow\" href=\"http:\/\/docs-ru.testmace.com\">http:\/\/docs-ru.testmace.com<\/a><\/noindex>. T\u0101tad, uz priek\u0161u! <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"ustanovka\">Uzst\u0101d\u012b\u0161ana<\/h1>\n<p><\/p>\n<p>S\u0101ksim ar vienk\u0101r\u0161\u0101m liet\u0101m. Lietotne ir pieejama un tie\u0161\u0101m test\u0113jama trij\u0101s platform\u0101s \u2014 Linux, Windows, MacOS. J\u016bs varat lejupiel\u0101d\u0113t instal\u0101cijas failu interes\u0113jo\u0161ajai OS no <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\">m\u016bsu m\u0101jaslapas<\/a><\/noindex>. Linux lietot\u0101jiem ir iesp\u0113ja instal\u0113t <noindex><a rel=\"nofollow\" href=\"https:\/\/snapcraft.io\/testmace\">snap pakotni<\/a><\/noindex>. M\u0113s \u013coti ceram, ka dr\u012bzum\u0101 b\u016bs iesp\u0113ja ar\u012b Microsoft Store un App Store (vai tas ir nepiecie\u0161ams? Ko dom\u0101jat?).<\/p>\n<p><\/p>\n<h1 id=\"podopytnyy-scenariy\">Eksperiment\u0101lais scen\u0101rijs<\/h1>\n<p><\/p>\n<p>K\u0101 eksperiment\u0101lo scen\u0101riju m\u0113s izv\u0113l\u0113j\u0101mies sekojo\u0161o standarta scen\u0101riju:<\/p>\n<p><\/p>\n<ul>\n<li>pierakst\u012bsimies: lietot\u0101js \u2014 admin, parole \u2014 password<\/li>\n<li>pievienosim jaunu ierakstu<\/li>\n<li>p\u0101rbaud\u012bsim, vai ieraksts tika pievienots pareizi<\/li>\n<\/ul>\n<p><\/p>\n<p>Test\u0113sim uz <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace-quick-start.herokuapp.com\/\">https:\/\/testmace-quick-start.herokuapp.com\/<\/a><\/noindex>. Tas ir parasts <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/typicode\/json-server\">json-server<\/a><\/noindex>, kas lieliski piem\u0113rots \u0161\u0101du lietot\u0146u test\u0113\u0161anai. M\u0113s tikai pievienoj\u0101m autentifik\u0101ciju ar tokenu visiem json-server ce\u013ciem un izveidoj\u0101m metodi login, lai ieg\u016btu \u0161o tokenu. Virz\u012bsimies soli pa solim, pak\u0101peniski uzlabojot m\u016bsu projektu.<\/p>\n<p><\/p>\n<h2 id=\"sozdanie-proekta-i-popytka-sozdat-suschnost-bez-avtorizacii\">Projekta izveide un m\u0113\u0123in\u0101jums izveidot vien\u012bbu bez autentifik\u0101cijas<\/h2>\n<p><\/p>\n<p>Vispirms izveidosim jaunu projektu (<strong>Fails<\/strong>-&gt;<strong>Jauns projekts<\/strong>). Ja j\u016bs palaid\u0101t lietotni pirmo reizi, tad jauns projekts atv\u0113rsies autom\u0101tiski. S\u0101ksim ar m\u0113\u0123in\u0101jumu izs\u016bt\u012bt piepras\u012bjumu jauna ieraksta izveidei (varb\u016bt ierakstu izveide ir pieejama bez autentifik\u0101cijas). Izv\u0113lieties konteksta izv\u0113ln\u0113 Project mezgla vienumus <strong>Pievienot mezglu<\/strong> -&gt; <strong>Piepras\u012bjuma solis<\/strong>. K\u0101 mezgla nosaukumu iestat\u012bsim <strong>izveidot-pasta<\/strong>. Rezult\u0101t\u0101 koka strukt\u016br\u0101 izveidosies jauns mezgls un tiks atv\u0113rts \u0161\u012b mezgla cilne. Iestat\u012bsim \u0161\u0101dus piepras\u012bjuma parametrus:<\/p>\n<p><\/p>\n<ul>\n<li>Piepras\u012bjuma tips: POST<\/li>\n<li>url: <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace-quick-start.herokuapp.com\/posts\">https:\/\/testmace-quick-start.herokuapp.com\/posts<\/a><\/noindex><\/li>\n<li>Piepras\u012bjuma \u0137ermenis: JSON ar v\u0113rt\u012bbu <code>{\"title\": \"Jauns testmace \u0101tr\u0101 s\u0101kuma ieraksts\"}<\/code><br \/>\nJa viss tika izdar\u012bts pareizi, tad interfeiss izskat\u012bsies \u0161\u0101di:<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. \u0100tra s\u0101k\u0161ana\" src=\"\/wp-content\/uploads\/2019\/12\/a5c81dc4977dd73a4975643bf8ced3da.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tom\u0113r, ja m\u0113s m\u0113\u0123in\u0101sim izpild\u012bt piepras\u012bjumu, serveris atgriez\u012bs 401 kodu, un bez autentifik\u0101cijas mums \u0161aj\u0101 server\u012b nekas neizdosies. Nu, tas bija gaid\u0101ms).<\/p>\n<p><\/p>\n<h2 id=\"dobavlyaem-zapros-na-avtorizaciyu\">Pievienojam piepras\u012bjumu autentifik\u0101cijai<\/h2>\n<p><\/p>\n<p>K\u0101 jau tika min\u0113ts, mums ir POST endpoint <code>\/login<\/code>, kas pie\u0146em k\u0101 piepras\u012bjuma \u0137ermeni JSON form\u0101t\u0101: <code>{\"username\": \"&lt;lietot\u0101jv\u0101rds&gt;\", \"password\": \"&lt;parole&gt;\"}<\/code>, kur <code>username<\/code> un <code>password<\/code> (atkal, no iepriek\u0161\u0113j\u0101s ievada) ir noz\u012bme <code>admin<\/code> un <code>password<\/code> attiec\u012bgi. Atbilde \u0161im endpointam atgrie\u017e json form\u0101t\u0101 <code>{\"token\": \"\"}<\/code>. M\u0113s to izmantosim autoriz\u0101cijai. Izveidosim <strong>Piepras\u012bjuma solis<\/strong> pu\u0161u ar nosaukumu <strong>login<\/strong>, k\u0101 vec\u0101kais elements kalpos <strong>Projekts<\/strong> pu\u0161u. Izmantojot drag-and-drop, p\u0101rvietojiet \u0161o pu\u0161u strukt\u016br\u0101 augst\u0101k par p\u016b\u0161u <strong>izveidot-pasta<\/strong>. Iestat\u012bsim jaunizveidotajam piepras\u012bjumam \u0161\u0101dus parametrus:<\/p>\n<p><\/p>\n<ul>\n<li>Piepras\u012bjuma tips: POST<\/li>\n<li>url: <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace-quick-start.herokuapp.com\/login\">https:\/\/testmace-quick-start.herokuapp.com\/login<\/a><\/noindex><\/li>\n<li>Piepras\u012bjuma \u0137ermenis: JSON ar v\u0113rt\u012bbu <code>{\"username\": \"admin\", \"password\": \"password\"}<\/code><\/li>\n<\/ul>\n<p><\/p>\n<p>Izpild\u012bsim piepras\u012bjumu un sa\u0146emsim divsimtais kodu ar tokenu atbild\u0113. Aptuveni t\u0101:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. \u0100tra s\u0101k\u0161ana\" src=\"\/wp-content\/uploads\/2019\/12\/222b2a0b965b4c1135b5b62c0b7424ba.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h2 id=\"refaktoring-ubiraem-dublirovanie-domena\">Refaktoriz\u0101cija: iz\u0146emam dom\u0113na dubl\u0113\u0161anu<\/h2>\n<p><\/p>\n<p>Pa\u0161laik piepras\u012bjumi nav saist\u012bti vien\u0101 scen\u0101rij\u0101. Bet tas nav vien\u012bgais tr\u016bkums. Ja paskat\u0101s tuv\u0101k, var paman\u012bt, ka vismaz dom\u0113ns tiek dubl\u0113ts abos piepras\u012bjumos. Tas nav labi. Ir laiks refaktoriz\u0113t \u0161o da\u013cu no n\u0101kotnes scen\u0101rija, un tas mums pal\u012bdz\u0113s main\u012bgie.<\/p>\n<p><\/p>\n<p>Pirmaj\u0101 pieg\u0101jien\u0101 main\u012bgie veic t\u0101du pa\u0161u lomu k\u0101 citos l\u012bdz\u012bgos r\u012bkos un programm\u0113\u0161anas valod\u0101s \u2014 dubl\u0113\u0161anas nov\u0113r\u0161ana, las\u0101m\u012bbas uzlabo\u0161ana utt. Par main\u012bgajiem var las\u012bt vair\u0101k <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/variables\/user-variables\">m\u016bsu dokument\u0101cij\u0101<\/a><\/noindex>. \u0160aj\u0101 gad\u012bjum\u0101 mums b\u016bs nepiecie\u0161ami lietot\u0101ju main\u012bgie. <\/p>\n<p><\/p>\n<p>Noteiksim projekta l\u012bmen\u012b p\u016b\u0161u main\u012bgo <code>dom\u0113ns<\/code> ar v\u0113rt\u012bbu <code>https:\/\/testmace-quick-start.herokuapp.com<\/code>. Lai to izdar\u012btu, nepiecie\u0161ams<\/p>\n<p><\/p>\n<ul>\n<li>Atv\u0113rt \u0161o p\u016bsu cilni un nospiest uz kalkulatora ikonas aug\u0161\u0113j\u0101 labaj\u0101 st\u016br\u012b<\/li>\n<li>Nospiediet uz <strong>+ PIEVIENOT MAIN\u012aGO<\/strong><\/li>\n<li>Ievadiet main\u012bg\u0101 nosaukumu un v\u0113rt\u012bbu<br \/>\nM\u016bsu gad\u012bjum\u0101 dialogs ar pievienoto main\u012bgo izskat\u012bsies \u0161\u0101di:<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. \u0100tra s\u0101k\u0161ana\" src=\"\/wp-content\/uploads\/2019\/12\/071ac6dca2c5a49b78b11719fae5f650.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Labi. Tagad, pateicoties manto\u0161anai, m\u0113s varam izmantot \u0161o main\u012bgo dzi\u013cuma p\u0113cn\u0101c\u0113jiem. M\u016bsu gad\u012bjum\u0101 t\u0101s ir p\u016b\u0161as <strong>login<\/strong> un <strong>izveidot-pasta<\/strong>. Lai tekstlauk\u0101 izmantotu main\u012bgo, j\u0101raksta <code>${}<\/code>. Piem\u0113ram, url pieteik\u0161anai tiek p\u0101rveidots par <code>${domain}\/login<\/code>, attiec\u012bgi p\u016b\u0161ai url izskat\u012bsies k\u0101 <strong>izveidot-pasta<\/strong> ${domain}\/posts <code>T\u0101tad, vadoties p\u0113c DRY principa, m\u0113s nedaudz uzlaboj\u0101m scen\u0101riju.<\/code>.<\/p>\n<p><\/p>\n<p>Saglab\u0101jam tokenu main\u012bgaj\u0101<\/p>\n<p><\/p>\n<h2 id=\"sohranyaem-token-v-peremennuyu\">Kop\u0161 esam s\u0101ku\u0161i run\u0101t par main\u012bgajiem, \u013caujiet mums nedaudz papla\u0161in\u0101t \u0161o t\u0113mu. Pa\u0161laik, ja m\u0113s veiksm\u012bgi piesak\u0101mies, sa\u0146emam no servera autoriz\u0101cijas tokenu, kuru mums vajadz\u0113s turpm\u0101kajos piepras\u012bjumos. Saglab\u0101sim \u0161o tokenu main\u012bgaj\u0101. T\u0101 k\u0101 main\u012bg\u0101 v\u0113rt\u012bba tiks noteikta scen\u0101rija izpildes laik\u0101, izmantosim \u0161im \u012bpa\u0161u meh\u0101nismu \u2014<\/h2>\n<p><\/p>\n<p>dinamiskie main\u012bgie <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/variables\/user-variables\/dynamic-variables\">dinamisk\u0101s main\u012bg\u0101s<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Lai uzs\u0101ktu, veiksim pieteik\u0161an\u0101s piepras\u012bjumu. Caur cilni <strong>Parsed<\/strong> atbildes p\u0101rmekl\u0113\u0161anai p\u0101rvietojiet kursoru uz token un konteksta izv\u0113ln\u0113 (ko var izsaukt ar peles labo pogu vai nospie\u017eot pogu &#8230;) izv\u0113lieties <strong>Pie\u0161\u0137irt main\u012bgajam<\/strong>. Par\u0101d\u012bsies dialogs ar \u0161\u0101diem lauki:<\/p>\n<p><\/p>\n<ul>\n<li><strong>Path<\/strong> \u2014 kuru atbildes da\u013cu \u0146emam (m\u016bsu gad\u012bjum\u0101 tas ir <code>body.token<\/code>)<\/li>\n<li><strong>Pa\u0161reiz\u0113j\u0101 v\u0113rt\u012bba<\/strong> \u2014 k\u0101da v\u0113rt\u012bba atrodas pa ce\u013cu Path (m\u016bsu gad\u012bjum\u0101 t\u0101 ir token v\u0113rt\u012bba)<\/li>\n<li><strong>Main\u012bg\u0101 nosaukums<\/strong> \u2014 main\u012bg\u0101 nosaukums, kur <strong>Pa\u0161reiz\u0113j\u0101 v\u0113rt\u012bba<\/strong> tiks saglab\u0101ta. M\u016bsu gad\u012bjum\u0101 tas b\u016bs <code>the access token that you will see in the console. Copy it and paste it on the page, then click<\/code><\/li>\n<li><strong>Node<\/strong> \u2014 kur\u0101 no priek\u0161te\u010diem tiks izveidots main\u012bgais <strong>Main\u012bg\u0101 nosaukums<\/strong>. Izv\u0113l\u0113simies Project<\/li>\n<\/ul>\n<p><\/p>\n<p>Aizpild\u012btais dialogs izskat\u0101s \u0161\u0101di:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. \u0100tra s\u0101k\u0161ana\" src=\"\/wp-content\/uploads\/2019\/12\/f524934dd1a4cb238afb6666135b360b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tagad, veicot katru mezglu <strong>login<\/strong> dinamiskais main\u012bgais <code>the access token that you will see in the console. Copy it and paste it on the page, then click<\/code> tiks atjaunin\u0101ts ar jauno v\u0113rt\u012bbu no atbildes. Un \u0161is main\u012bgais tiks glab\u0101ts <strong>Projekts<\/strong> mezgl\u0101 un pateicoties mantojumam b\u016bs pieejams p\u0113cte\u010diem.<\/p>\n<p><\/p>\n<p>Lai piek\u013c\u016btu dinamiskajiem main\u012bgajiem, nepiecie\u0161ams izmantot <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/variables\/variables\">ieb\u016bv\u0113to main\u012bgo<\/a><\/noindex> <code>$dynamicVar<\/code>. Piem\u0113ram, lai piek\u013c\u016btu saglab\u0101tajam tokenam, ir j\u0101izsauc <code>${$dynamicVar.token}<\/code>.<\/p>\n<p><\/p>\n<h2 id=\"prokidyvaem-avtorizacionnyy-token-v-zaprosy\">P\u0101rs\u016bt\u0101m autoriz\u0101cijas tokenu piepras\u012bjumos<\/h2>\n<p><\/p>\n<p>Iepriek\u0161\u0113j\u0101s darb\u012bb\u0101s m\u0113s sa\u0146\u0113m\u0101m autoriz\u0101cijas tokenu un viss, kas j\u0101dara, ir j\u0101papildina virsraksts <code>Authorization<\/code> ar v\u0113rt\u012bbu <code>Bearer &lt;tokenValue&gt;<\/code> visos piepras\u012bjumos, kur nepiecie\u0161ama autoriz\u0101cija, tostarp ar\u012b <strong>izveidot-pasta<\/strong>. Tam ir vair\u0101ki veidi:<\/p>\n<p><\/p>\n<ol>\n<li>Roku kop\u0113t tokenu un pievienot autoriz\u0101cijas virsrakstu interes\u0113jo\u0161iem piepras\u012bjumiem. \u0160\u012b pieeja darbojas, tom\u0113r t\u0101s izmanto\u0161ana ir ierobe\u017eota tikai uz piepras\u012bjumiem, kas ir 'izdar\u012bts un izmests'. T\u0101 nav piem\u0113rota atk\u0101rtotiem scen\u0101riju izpild\u0113m.<\/li>\n<li>Izmantot funkcionalit\u0101ti <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/work-with\/authorization\">autoriz\u0101cija<\/a><\/noindex>.<\/li>\n<li>Izmantot <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/other\/default-http-headers\">noklus\u0113juma virsraksti<\/a><\/noindex><\/li>\n<\/ol>\n<p><\/p>\n<p>Otr\u0101 pieeja \u0161\u0137iet ac\u012bmredzama, tom\u0113r \u0161aj\u0101 rakst\u0101 \u0161\u0101ds pieeja\u2026 nav interesanta. Nu, patie\u0161\u0101m: autoriz\u0101cijas meh\u0101nisms, plus m\u012bnus, jums ir zin\u0101ms no citiem r\u012bkiem (lai ar\u012b mums ir lietas k\u0101 <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/work-with\/authorization#inherit-from-parent\">autoriz\u0101ciju manto\u0161ana<\/a><\/noindex>) un, visticam\u0101k, nerad\u012bs jaut\u0101jumus. <\/p>\n<p><\/p>\n<p>Cits ir cits jaut\u0101jums par noklus\u0113juma virsrakstiem! Ja \u012bsi, tad noklus\u0113juma virsraksti ir mantojamie HTTP virsraksti, kas p\u0113c noklus\u0113juma tiek pievienoti piepras\u012bjumam, ja tos skaidri izsl\u0113dz. Izmantojot \u0161o funkcionalit\u0101ti, varam, piem\u0113ram, realiz\u0113t piel\u0101gotu autoriz\u0101ciju vai vienk\u0101r\u0161i izvair\u012bties no dubl\u0113\u0161an\u0101s scen\u0101rijos. Pielietosim \u0161o funkciju, lai p\u0101rs\u016bt\u012btu tokenus virsrakstos.<\/p>\n<p><\/p>\n<p>Iepriek\u0161 m\u0113s apdom\u012bgi saglab\u0101j\u0101m tokenu dinamik\u0101 main\u012bgaj\u0101 <code>$dynamicVar.token<\/code> projekta mezgla l\u012bmen\u012b. Atliek izdar\u012bt sekojo\u0161o:<\/p>\n<p><\/p>\n<ol>\n<li>Defin\u0113t noklus\u0113juma virsrakstu <code>Authorization<\/code> ar v\u0113rt\u012bbu <code>Bearer ${$dynamicVar.token}<\/code> projekta mezgla l\u012bmen\u012b. Lai to izdar\u012btu, projekt\u0101 j\u0101atver noklus\u0113juma virsrakstu dialogs (poga <strong>Headers<\/strong> labaj\u0101 aug\u0161\u0113j\u0101 st\u016br\u012b) un pievienot attiec\u012bgo virsrakstu. Aizpild\u012bto v\u0113rt\u012bbu dialogs izskat\u012bsies sekojo\u0161i:<br \/>\n<img decoding=\"async\" alt=\"TestMace. \u0100tra s\u0101k\u0161ana\" src=\"\/wp-content\/uploads\/2019\/12\/9abd888cbf96e53b633e8f0fd3389297.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>Izsl\u0113dziet \u0161o virsrakstu no login piepras\u012bjuma. Tas ir saprotams: login br\u012bd\u012b mums v\u0113l nav tokena, un m\u0113s ar \u0161o piepras\u012bjumu k\u0101reiz to iestat\u012bsim. T\u0101p\u0113c login piepras\u012bjuma interfeis\u0101 ciln\u0113 <strong>Headers<\/strong> graf\u0101 <strong>Inherited<\/strong> no\u0146emam atz\u012bmi no Authorization virsraksta. <\/li>\n<\/ol>\n<p><\/p>\n<p>Uz to ar\u012b viss. Tagad autoriz\u0101cijas virsraksts tiks pievienots visiem piepras\u012bjumiem, kas ir projekta mezgla p\u0113cte\u010di, iz\u0146emot login mezglu. San\u0101k, ka \u0161aj\u0101 posm\u0101 m\u016bsu scen\u0101rijs jau ir gatavs, un atliek tikai to palaist. Scen\u0101riju var palaist, izv\u0113loties vienumu <strong>Run<\/strong> kontekstizv\u0113ln\u0113 projekta mezglam. <\/p>\n<p><\/p>\n<h2 id=\"proveryaem-korrektnost-sozdaniya-posta\">P\u0101rbaud\u0101m posta izveides pareiz\u012bbu<\/h2>\n<p><\/p>\n<p>\u0160aj\u0101 posm\u0101 m\u016bsu scen\u0101rijs sp\u0113j pieteikties, un, izmantojot autoriz\u0101cijas tokenu, izveidot postu. Tom\u0113r mums j\u0101p\u0101rliecin\u0101s, ka jaunizveidotais posts ir ar pareizu nosaukumu. Proti, b\u016bt\u012bb\u0101 atliek izdar\u012bt sekojo\u0161o:<\/p>\n<p><\/p>\n<ul>\n<li>Nos\u016bt\u012bt piepras\u012bjumu, lai ieg\u016btu postu p\u0113c id, <\/li>\n<li>P\u0101rbaud\u012bt, vai nosaukums, kas sa\u0146emts no servera, atbilst nosaukumam, kas tika nodo\u0101ts posto\u0161anai<\/li>\n<\/ul>\n<p><\/p>\n<p>Apskat\u012bsim pirmo soli. T\u0101 k\u0101 id v\u0113rt\u012bba tiek noteikta izpildes laik\u0101, nepiecie\u0161ams izveidot dinamisku main\u012bgo (nosauk\u0161u to <code>postId<\/code>) no mezgla <strong>izveidot-pasta<\/strong> projekta mezgla l\u012bmen\u012b. K\u0101 to izdar\u012bt, m\u0113s jau zin\u0101m, pietiek ar to, ka v\u0113r\u0161amies pie sada\u013cas <strong>Kop\u0161 esam s\u0101ku\u0161i run\u0101t par main\u012bgajiem, \u013caujiet mums nedaudz papla\u0161in\u0101t \u0161o t\u0113mu. Pa\u0161laik, ja m\u0113s veiksm\u012bgi piesak\u0101mies, sa\u0146emam no servera autoriz\u0101cijas tokenu, kuru mums vajadz\u0113s turpm\u0101kajos piepras\u012bjumos. Saglab\u0101sim \u0161o tokenu main\u012bgaj\u0101. T\u0101 k\u0101 main\u012bg\u0101 v\u0113rt\u012bba tiks noteikta scen\u0101rija izpildes laik\u0101, izmantosim \u0161im \u012bpa\u0161u meh\u0101nismu \u2014<\/strong>. Atliek tikai izveidot piepras\u012bjumu, lai ieg\u016btu postu p\u0113c \u0161\u012b id. T\u0101p\u0113c izveidosim RequestStep <strong>get-post<\/strong> ar \u0161\u0101diem parametriem:<\/p>\n<p><\/p>\n<ul>\n<li>Piepras\u012bjuma veids: GET<\/li>\n<li>URL: ${domain}\/posts\/${$dynamicVar.postId}<\/li>\n<\/ul>\n<p><\/p>\n<p>Lai \u012bstenotu otro soli, mums ir nepiecie\u0161ams iepaz\u012bties ar <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/assertion\">Assertion<\/a><\/noindex> mezglu. Assertion mezgls ir mezgls, kas \u013cauj rakst\u012bt p\u0101rbaudes noteikt\u0101m piepras\u012bjumiem. Katrs Assertion mezgls var satur\u0113t vair\u0101kas apstiprin\u0101\u0161anas (p\u0101rbaudes). S\u012bk\u0101ku inform\u0101ciju par visiem assertion veidiem varat izlas\u012bt m\u016bsu <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/assertion\">dokument\u0101cij\u0101<\/a><\/noindex>. M\u0113s izmantosim <code>Compare<\/code> assertion ar operatoru <code>equal<\/code>. Ir vair\u0101ki veidi, k\u0101 izveidot assertion:<\/p>\n<p><\/p>\n<ol>\n<li>Ilgais. Manu\u0101li no konteksta izv\u0113lnes RequestStep mezgla izveidot Assertion mezglu. Izveidotaj\u0101 Assertion mezgl\u0101 pievienot interes\u0113jo\u0161o assertion un aizpild\u012bt laukus.<\/li>\n<li>\u0100trais. Izveidot Assertion mezglu kop\u0101 ar assertion no RequestStep mezgla atbildes, izmantojot konteksta izv\u0113lni<\/li>\n<\/ol>\n<p><\/p>\n<p>Izmantosim otro veidu. \u0160\u0101di tas izskat\u012bsies m\u016bsu gad\u012bjum\u0101.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. \u0100tra s\u0101k\u0161ana\" src=\"\/wp-content\/uploads\/2019\/12\/7f1d81669cb4c10db5f0afa3bf04eddf.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tiem, kas nesaprat\u012bs, te notiek sekojo\u0161ais:<\/p>\n<p><\/p>\n<ol>\n<li>Veikt piepras\u012bjumu mezgl\u0101 <strong>get-post<\/strong><\/li>\n<li>Ciln\u0113 <strong>Parsed<\/strong> atbild\u0113 izsaukt konteksta izv\u0113lni un izv\u0113l\u0113ties <strong>Create assertion<\/strong> -&gt; <strong>Compare<\/strong> -&gt; <strong>Equal<\/strong><\/li>\n<\/ol>\n<p><\/p>\n<p>Apsveicu, m\u0113s izveidoj\u0101m pirmo testu! Viegli, vai ne? Tagad varat palaist scen\u0101riju piln\u012bb\u0101 un izbaud\u012bt rezult\u0101tu. Paliek pavisam nedaudz, lai refaktor\u0113tu un izceltu <code>title<\/code> k\u0101d\u0101 atsevi\u0161\u0137\u0101 main\u012bgaj\u0101. Bet m\u0113s to atst\u0101sim jums k\u0101 m\u0101jas darbu)<\/p>\n<p><\/p>\n<h1 id=\"zaklyuchenie\">Secin\u0101jums<\/h1>\n<p><\/p>\n<p>\u0160aj\u0101 rokasgr\u0101mat\u0101 m\u0113s izveidoj\u0101m pilnv\u0113rt\u012bgu scen\u0101riju un vienlaikus apskat\u012bj\u0101m da\u017eas m\u016bsu produkta funkcijas. Protams, m\u0113s neizmantoj\u0101m visus iesp\u0113jas, un n\u0101kamajos rakstos m\u0113s veiksim detaliz\u0113tu TestMace funkcionalit\u0101tes apskatu. Sekojiet l\u012bdz jaunumiem!<\/p>\n<p><\/p>\n<p>P.S. Tiem, kam slinkums atjaunot visus so\u013cus, m\u0113s laipni sagatavoj\u0101m <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/TestMace\/testmace-quick-start-project\">repozitorijs<\/a><\/noindex> ar projektu no raksta. To var atv\u0113rt, izmantojot <strong>Fails<\/strong> -&gt; <strong>Open project<\/strong> un izv\u0113loties mapi Project.<\/p>\n<p>Avots: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/458964\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u041c\u044b \u043f\u043e\u0442\u0438\u0445\u043e\u043d\u044c\u043a\u0443 \u0432\u044b\u0445\u043e\u0434\u0438\u043c \u0438\u0437 \u0442\u0435\u043d\u0438 \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0441\u0435\u0440\u0438\u044e \u0441\u0442\u0430\u0442\u0435\u0439 \u043e \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0435. \u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u043e\u0431\u0437\u043e\u0440\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043e\u0442\u0437\u044b\u0432\u043e\u0432 (\u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445), \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 bug \u0440\u0435\u043f\u043e\u0440\u0442\u043e\u0432. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u043f\u043e\u043a\u0430\u0436\u0435\u043c TestMace \u0432 \u0434\u0435\u043b\u0435 \u0438 \u0432\u044b \u043f\u043e \u0434\u043e\u0441\u0442\u043e\u0438\u043d\u0441\u0442\u0432\u0443 \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0444\u0438\u0448\u043a\u0438 \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u043f\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0441\u043e\u0432\u0435\u0442\u0443\u044e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u043a \u043d\u0430\u0448\u0435\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-54167","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.5 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/lv\/blog\/news\/testmace-bystryj-start\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"lv_LV\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47TestMace. \u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/lv\/blog\/news\/testmace-bystryj-start\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-12-18T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:02:08+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47TestMace. \u0100tr\u0101 uzs\u0101k\u0161ana | ProHoster","description":"Visiem sveiciens.","canonical_url":"https:\/\/prohoster.info\/lv\/blog\/news\/testmace-bystryj-start","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"lv_LV","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47TestMace. \u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442 | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442.","og:url":"https:\/\/prohoster.info\/lv\/blog\/news\/testmace-bystryj-start","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-12-18T21:00:00+00:00","article:modified_time":"2020-02-18T11:02:08+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"54167","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 10:17:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 20:10:34","updated":"2026-01-24 10:17:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts\/54167","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/comments?post=54167"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts\/54167\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/media?parent=54167"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/categories?post=54167"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/tags?post=54167"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}