{"id":231680,"date":"2023-01-10T15:41:00","date_gmt":"2023-01-10T12:41:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231680"},"modified":"2022-12-25T18:54:40","modified_gmt":"2022-12-25T15:54:40","slug":"lihtsad-javascripti-ueksuste-testid-wordpressis-koos-jestiga","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/lihtsad-javascripti-ueksuste-testid-wordpressis-koos-jestiga\/","title":{"rendered":"Lihtsad JavaScripti \u00fcksuste testid WordPressis koos Jestiga"},"content":{"rendered":"\n<p>WordPress on oma PHP-koodi testinud pikka aega. Teemades ja pistikprogrammides oleva koodi jaoks JavaScripti \u00fchikutestide ja integratsioonitestide kirjutamisel ei ole aga sama olekut. Vaatame, kuidas testida JavaScripti meie WordPressi pistikprogrammides ja teemades Jesti abil.<\/p>\n<p>Selles artiklis k\u00e4sitleme j\u00e4rgmist sisu:<\/p>\n<h2>JavaScripti \u00fchikutestid WordPressis<\/h2>\n<p>Miks siis kirjutada \u00fchikuteste ja integratsiooniteste? Need tagavad suurep\u00e4raselt, et funktsioon, klassimeetod v\u00f5i isegi Reacti komponent teeb seda, mida nad peaksid tegema. See aitab tuvastada koodis vigu ja aitab s\u00e4ilitada terviklikkust, kui koodi hiljem tehakse muudatusi, kontrollides, et see t\u00f6\u00f6tab p\u00e4rast v\u00e4rskendamist ikka nii nagu ette n\u00e4htud.<\/p>\n<p><a href=\"https:\/\/startfunction.com\/category\/wordpress\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WordPressi<\/a> pistikprogrammid ja teemad on enamasti kirjutatud PHP-s ning v\u00f5ivad kasutada PHPUnit komplekti testide k\u00e4itamiseks, v\u00e4idete tegemiseks, funktsioonide pilkamiseks ja muuks. K\u00e4siraamatus on isegi osa, mis selgitab, kuidas <a href=\"https:\/\/make.wordpress.org\/cli\/handbook\/plugin-unit-tests\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WP-CLI-ga \u00fcksuse testimist kiiresti seadistada<\/a>.<\/p>\n<p>JavaScripti jaoks on k\u00e4siraamatus leht <a href=\"https:\/\/make.wordpress.org\/core\/handbook\/testing\/automated-testing\/qunit\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">QUniti testide k\u00e4itamise<\/a> kohta, kuigi see puudutab rohkem JavaScripti koodi testimist WordPressi tuumas.<\/p>\n<p>Kuigi \u00fckski neist pole WordPressis JavaScripti jaoks standardiseeritud, saame Jest testimiskomplekti kasutades kirjutada suurep\u00e4raseid \u00fchikuteste. Selles artiklis \u00f5pime, kuidas kirjutada JavaScripti \u00fchikuteste n\u00e4idisplugina jaoks, mis laadib <code>fetch<\/code>JavaScripti funktsiooni kasutades WP REST API kaudu 5 postitust ja renderdab need lehe teatud DOM-i elemendis.<\/p>\n<h2>Jesti kasutamise eelised JavaScripti \u00fchikutestide jaoks WordPressis<\/h2>\n<p>Varem h\u00f5lmas JavaScripti \u00fchikutestide kirjutamine Mocha seadistamist testide k\u00e4itamiseks, Chai seadistamist v\u00e4idete esitamiseks ja Sinoni funktsioonide pilkamist ja nende j\u00e4rele luuramist. Kuigi need pakuvad suurt paindlikkust, on kolme paketiga palju keerulisem t\u00f6\u00f6tada kui \u00fche paketiga. <a href=\"https:\/\/jestjs.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Jest<\/a> pakub k\u00f5ike seda \u00fches paketis:<\/p>\n<ul>\n<li>saate k\u00e4ivitada teste, mis deklareerivad neid m\u00e4rkidega <code>describe<\/code>ja <code>it<\/code>v\u00f5i<code>test<\/code><\/li>\n<li>v\u00e4iteid saate teha klahvidega <code>expect<\/code>ja <code>toBe<\/code>ning <code>toHaveLength<\/code>palju muud<\/li>\n<li>saate funktsioone m\u00f5nitada ja nende j\u00e4rele luurata ning selleks on mitu v\u00f5imalust<\/li>\n<\/ul>\n<h3>Enne edasi liikumist<\/h3>\n<p>Selleks et see artikkel keskenduks Jestiga testimisele, on testimisprotsessist v\u00e4ljaspool t\u00e4iendavaid seadistusi, nagu Babel v\u00f5i Webpack, mida siin ei k\u00e4sitleta. K\u00f5ik see on leitav selle artikliga kaasas <a href=\"https:\/\/github.com\/eliorivero\/wp-jest-tests\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">olevast WP Jest Testi repost .<\/a> Asjade kontekstip\u00f5hiseks hoidmiseks lingib iga jaotis \u00fchele asjakohastest failidest, mille kirjutame.<\/p>\n<h2>PHP poole \u00fclevaade<\/h2>\n<p>N\u00e4idisplugina <a href=\"https:\/\/github.com\/eliorivero\/wp-jest-tests\/blob\/master\/wp-jest-tests.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHP,<\/a> mida kasutame JavaScripti \u00fchikutestide kirjutamise \u00f5ppimiseks, on \u00fcsna standardne. Ainsad huvitavad read on need, kui paneme oma JavaScripti faili j\u00e4rjekorda ja lisame sellele muutujate edastamiseks tekstisisese skripti:<\/p>\n<pre><code>$initial_state = rawurlencode( wp_json_encode( array(\n    'restUrl' =&gt; esc_url_raw( rest_url() ),\n    'posts'   =&gt; 5,)) );\nwp_enqueue_script( \n    'wp-jest-tests',\n    plugins_url( 'front.js', __FILE__ ),\n    array(),\n    $plugin_version,\n    true\n);\nwp_add_inline_script(\n    'wp-jest-tests',\n    'window.wpJestTests = JSON.parse(decodeURIComponent(\"'. $initial_state. '\"));',\n    'before'\n);<\/code><\/pre>\n<p>P\u00e4rast JavaScripti faili p\u00e4ringut lisame globaalse muutuja <code>wpJestTests<\/code>koos <code>wp_add_inline_script()<\/code>. See muutuja on eriti huvitav ja keeruline k\u00e4sitleda, kuna see on v\u00e4ljaspool meie JavaScripti faili ja me peame seda oma testides m\u00f5nitama.<\/p>\n<h2>Seadistage Jesti testid<\/h2>\n<p>Peame esmalt <code>npm<\/code>oma pistikprogrammi projektis l\u00e4htestama, et saaksime Jesti sellega installida. Liikuge k\u00e4sureal oma pistikprogrammi kausta ja k\u00e4ivitage:<\/p>\n<p><code>npm init<\/code>ja tutvuge siinsete viipade seeriaga<\/p>\n<p>Muutke loodud faili <a href=\"https:\/\/github.com\/eliorivero\/wp-jest-tests\/blob\/master\/package.json\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">package.json<\/a> ja lisage meie testide k\u00e4ivitamiseks <code>scripts<\/code>jaotises uus kirje:<\/p>\n<p><code>\"test\": \"jest\"<\/code><\/p>\n<p>See on k\u00e4sk, mille abil anname Jestile JavaScripti \u00fcksuse testid k\u00e4itada. See on \u00fchekordne k\u00e4itamine, kuid Jest toetab ka failide vaatamist, nii et saate sisestada t\u00e4iendava:<\/p>\n<p><code>\"test-watch\": \"jest --watch\"<\/code><\/p>\n<p>N\u00fc\u00fcd installige Jest arenduss\u00f5ltuvusena, k\u00e4ivitades<\/p>\n<p><code>npm install -D jest<\/code><\/p>\n<p>Installimise ajal looge fail nimega <code>jest.config.js<\/code>. See hoiab kogu vajaliku konfiguratsiooni. Lisage j\u00e4rgmine:<\/p>\n<pre><code>module.exports = {\n    verbose: true,\n    setupFiles: [\n        '\/__mocks__\/globals.js'\n    ],\n    moduleNameMapper: {\n        '.(css|less|sass|scss)$': '\/__mocks__\/styleMock.js'\n   }\n};<\/code><\/pre>\n<p>Vaatame iga\u00fcks neist l\u00e4bi:<\/p>\n<ul>\n<li><code>verbose<\/code>: n\u00e4itab, kas iga \u00fcksikkatse tuleb jooksu ajal aru anda. K\u00f5ik vead kuvatakse ka p\u00e4rast t\u00e4itmist endiselt allosas. Pange t\u00e4hele, et kui k\u00e4ivitamisel on ainult \u00fcks testfail, on see vaikimisi <code>true<\/code>.<\/li>\n<li><code>setupFiles<\/code>: loend moodulitest, mis k\u00e4itavad testimiskeskkonna konfigureerimiseks v\u00f5i seadistamiseks mingit koodi. Iga setupFile k\u00e4ivitatakse \u00fcks kord testfaili kohta. Kuna iga test t\u00f6\u00f6tab oma keskkonnas, k\u00e4ivitatakse need skriptid testimiskeskkonnas vahetult enne testkoodi enda k\u00e4ivitamist. Kasutame seda PHP ja WordPressi renderdatud globaalsete muutujate deklareerimiseks selliste k\u00e4skudega nagu <code>wp_add_inline_script<\/code>v\u00f5i <code>wp_localize_script<\/code>.<\/li>\n<li><code>moduleNameMapper<\/code>: see on kaart regulaaravaldistest moodulite nimedeni (v\u00f5i moodulinimede massiivideni), mis v\u00f5imaldab \u00fche mooduliga staatilisi ressursse, n\u00e4iteks pilte v\u00f5i stiile, v\u00e4lja j\u00e4tta.<\/li>\n<\/ul>\n<p>Kindlasti m\u00e4rkasite viidet: see on spetsiaalne m\u00e4rk, mille Jest asendab teie projekti juurega, mis tavaliselt on teie <code>package.json<\/code>.<\/p>\n<p>L\u00e4heme kahes j\u00e4rgmises jaotises s\u00fcvitsi, kuid esmalt looge kaust ja need kaks eespool viidatud faili:<\/p>\n<ul>\n<li>looge kaust nimega<code>__mocks__<\/code><\/li>\n<li>looge kaustas failid <code>styleMock.js<\/code>ja<code>globals.js<\/code><\/li>\n<\/ul>\n<h2>Pildistiilide import Jesti testide jaoks<\/h2>\n<p>Kui kasutate sarnaselt selle pistikprogrammiga Webpacki, et kompileerida k\u00f5ike, sealhulgas stiile, ja impordite <code>.scss<\/code>faili <code>.js<\/code>faili:<\/p>\n<pre><code>import '.\/main.scss';<\/code><\/pre>\n<p>peate kasutama SASS-failide pilkamiseks JavaScripti faili importimisel faili <a href=\"https:\/\/github.com\/eliorivero\/wp-jest-tests\/blob\/master\/__mocks__\/styleMock.js\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">styleMock.js<\/a>, vastasel juhul jookseb Jest kokku, kuna see ei suuda moodulit lahendada. Selle faili jaoks pole palju vaja, lihtsalt lisage<\/p>\n<p>Jest kasutab seda pilku iga kord, kui leiab <code>.scss<\/code>imporditud faili, ja seostab need prooviga, v\u00f5imaldades teil katsetega edasi liikuda ilma stiilidest hoolimata.<\/p>\n<h2>Seadistage Jesti jaoks globaalsed rakendused<\/h2>\n<p>T\u00f6\u00f6tame n\u00fc\u00fcd faili <a href=\"https:\/\/github.com\/eliorivero\/wp-jest-tests\/blob\/master\/__mocks__\/globals.js\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">globals.js kallal<\/a>. \u00dcks Jesti kasutamise eelistest on see, et see tarnitakse juba konfigureeritud <code>jsdom<\/code>veebistandardite puhta JavaScript-rakendusega, mis simuleerib DOM-i keskkonda nii, nagu oleksite brauseris, ja me kasutame seda DOM-i elementide pilkamiseks. meie testide jaoks.<\/p>\n<p>Looge kaust <code>__mocks__<\/code>ja selle <code>globals.js<\/code>sees fail. Lisage failile see:<\/p>\n<pre><code>import { JSDOM } from 'jsdom';\nconst dom = new JSDOM();\nglobal.document = dom.window.document;\nglobal.window = dom.window;\nglobal.window.wpJestTests = undefined;<\/code><\/pre>\n<p>See deklareerib ja pilkab m\u00f5ningaid objekte ja meetodeid, mida hiljem oma testides kasutate. Viimane pakub erilist huvi<\/p>\n<pre><code>global.window.wpJestTests = undefined;<\/code><\/pre>\n<p>See on globaalne muutuja, mille kirjutasime kasutades <code>wp_add_inline_script<\/code>. Peate seda pilkama kui globaalset muutujat, et saaksite seda oma testides kasutada.<\/p>\n<h2>JavaScripti faili \u00fclevaade<\/h2>\n<p>WordPressi pistikprogrammi kaustas on \u00fcks JavaScripti fail <a href=\"https:\/\/github.com\/eliorivero\/wp-jest-tests\/blob\/master\/src\/main.js\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">main.js.<\/a> <code>\/src<\/code>See transpileeritakse hiljem ja v\u00e4ljastatakse <code>\/js\/front.js<\/code>faili, mille PHP laadib. JavaScript laadib WP REST API kaudu viis WordPressi postitust <code>fetch<\/code>standardse JavaScripti funktsiooni abil ja lisab selle pealkirja koos lingiga postitusele <code>div.entry-content<\/code>.<\/p>\n<p>Ekspordite funktsiooni, mis teeb kogu t\u00f6\u00f6:<\/p>\n<pre><code>export const wpJestTestsInit =() =&gt; {<\/code><\/pre>\n<p>et saaksite seda Jesti testides kasutada.<\/p>\n<h2>L\u00f5puks kirjutame Jestiga JavaScripti \u00fchikutestid!<\/h2>\n<p>N\u00fc\u00fcd saab hakata teste kirjutama! Jest leiab teste mitmel viisil:<\/p>\n<ul>\n<li>kui faili nimi on<code>test.js<\/code><\/li>\n<li>v\u00f5i selle eesliide on testitava faili nimi, n\u00e4iteks<code>main.test.js<\/code><\/li>\n<li>kui need on <code>.js<\/code>failid, mis asuvad kaustas nimega<code>__tests__<\/code><\/li>\n<\/ul>\n<p>Looge <code>__tests__<\/code>kaust ja selle sees <code>front.test.js<\/code>. <a href=\"https:\/\/github.com\/eliorivero\/wp-jest-tests\/blob\/master\/__tests__\/front.test.js\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Jesti testide valmis JavaScripti faili<\/a> n\u00e4ete kaasrepos. K\u00e4ime selle plokkide kaupa l\u00e4bi. Esimene rida impordib JS-faili, mida tahame testida:<\/p>\n<pre><code>import { wpJestTestsInit } from '..\/src\/main';<\/code><\/pre>\n<p>J\u00e4rgmisena t\u00fchjendame k\u00f5ik moed, nii et me ei jookse kunagi r\u00e4paste piladega, mis kannavad varasemate testide v\u00e4\u00e4rtusi. See v\u00f5ib p\u00f5hjustada vigu, kuna n\u00e4iteks kui luurame, mitu korda m\u00f5nitatud funktsiooni kutsuti, v\u00f5ime saada vale n\u00e4idu, kui me ei t\u00fchjenda testi ja testi vahelist pilku:<\/p>\n<pre><code>afterEach(() =&gt; {\n    jest.clearAllMocks();\n} );<\/code><\/pre>\n<p>Esimene test, mille me kirjutame, esitab p\u00f5hiv\u00e4ited, kui m\u00f5ni asi eba\u00f5nnestub. N\u00e4iteks kui globaalset <code>wpJestTests<\/code>muutujat, millega kirjutasime, <code>wp_add_inline_script<\/code>ei kirjutatud mingil p\u00f5hjusel:<\/p>\n<pre><code>describe( 'Initialization', () =&gt; {\n    test( 'if wpJestTests is undefined, nothing happens', () =&gt; {\n        expect( wpJestTestsInit() ).toBe( false );\n    } );\n\n    test( 'if .entry-content is missing, nothing happens', () =&gt; {\n        wpJestTests = { posts: 5 };\n        const mockQuerySelector = jest.spyOn( document, 'querySelector') .mockImplementation( () =&gt; undefined );\n        expect( wpJestTestsInit() ).toBe( false );\n        expect( mockQuerySelector ).toHaveBeenCalledTimes( 1 );\n    } );\n} );<\/code><\/pre>\n<p>Selles koodis<\/p>\n<ul>\n<li><code>describe<\/code>loob r\u00fchma, mis koosneb mitmest seotud testist<\/li>\n<li><code>test<\/code>on see, mis tegelikult testi teeb<\/li>\n<li><code>expect<\/code>\u00fcmbritseb meie testitavat subjekti, pakkudes juurdep\u00e4\u00e4su mitmele &quot;sobitajale&quot;, mis v\u00f5imaldab teil selle sisu kohta erinevaid v\u00e4iteid esitada<\/li>\n<li><code>toBe<\/code>on \u00fcks neist sobitajatest. Jest sisaldab palju <a href=\"https:\/\/jestjs.io\/docs\/en\/expect\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">sobitajaid<\/a> ja on isegi teisi, mida saate <a href=\"https:\/\/github.com\/jest-community\/jest-extended#jest-extended\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">kolmanda osapoole paketiga<\/a> lisada .<\/li>\n<\/ul>\n<p>Esimene test ei m\u00e4\u00e4ratle midagi, <code>wpJestTests<\/code>nii et selle v\u00e4\u00e4rtus on see, mida m\u00e4\u00e4rasite jaotises <code>globals.js<\/code>. Kuna see on <code>undefined<\/code>, ei saa me t\u00f6\u00f6tada, seega tahame kinnitada, et funktsioon naaseb midagi tegemata.<\/p>\n<p>Teine test m\u00e4\u00e4ratleb <code>wpJestTests<\/code>ja pilkab <code>document.querySelector<\/code>tagastamismeetodi, <code>undefined<\/code>mille see tagastaks, kui ta ei leiaks DOM-ist elementi. Sellisel juhul tahame kinnitada, et naaseme midagi tegemata ja et meie pilkamise funktsiooni <code>document.querySelector<\/code>kutsuti \u00fcks kord v\u00e4lja.<\/p>\n<h2>Mock Fetch Jesti testides<\/h2>\n<p>J\u00e4rgmine testide komplekt algab<\/p>\n<pre><code>describe( 'Fetch posts', () =&gt; {<\/code><\/pre>\n<p>ja selle sees on meil veel \u00fcks rebimise funktsioon:<\/p>\n<pre><code>afterAll( () =&gt; {\n    global.fetch.mockClear();\n    delete global.fetch;\n});<\/code><\/pre>\n<p>erinevalt <code>afterEach<\/code>sellest k\u00e4ivitatakse p\u00e4rast k\u00f5igi selle <code>describe<\/code>ploki sees olevate testide k\u00e4itamist. Kuna meie JavaScript-faili kasutatakse <code>fetch<\/code>postituste laadimiseks, peame kontrollima, kas seda kutsuti ja see tagastas selle, mida k\u00fcsisime, seega hakkame <code>fetch<\/code>funktsiooni m\u00f5nitama:<\/p>\n<pre><code>global.fetch = jest.fn().mockImplementation(\n    () =&gt; Promise.resolve({\n        ok: true,\n        status: 200,\n        json: () =&gt; Promise.resolve( [\n            {\n                link: 'test-1',\n                title: { rendered: 'Post 1' }\n            },\n            {\n                link: 'test-2',\n                title: { rendered: 'Post 2' }\n            },\n            {\n                link: 'test-3',\n                title: { rendered: 'Post 3' }\n            },\n            {\n                link: 'test-4',\n                title: { rendered: 'Post 4' }\n            },\n            {\n                link: 'test-5',\n                title: { rendered: 'Post 5' }\n            },\n        ] ),\n    })\n);<\/code><\/pre>\n<p>Pilkame esimest lubadust, mis lahendab vastuse, ja teist andmete JSON-i esitust. Need andmed on sarnased WP REST API-lt saadud andmetega. Arvestades, et meie kood vajab ainult pealkirja ja linki, irvitame seda.<\/p>\n<h2>JavaScripti integratsiooni test Jestiga as\u00fcnkroonses koodis, mis kasutab toomist<\/h2>\n<p>N\u00fc\u00fcd saame testi kirjutada pilkatud <code>fetch<\/code>. Sellel testil on teiste JavaScripti \u00fchikutestidega v\u00f5rreldes suur erinevus: see on integratsioonitest. Varasemad siin uuritud testid lihtsalt tagasid, et komponent t\u00f6\u00f6tas h\u00e4sti. Kontrollisime, et kui algoleku globaalset muutujat pole m\u00e4\u00e4ratletud, siis meie komponenti ei renderdataks. See on erinev, kuna me testime, kuidas kogu s\u00fcsteem t\u00f6\u00f6tab, kui algolekumuutuja on m\u00e4\u00e4ratletud, k\u00e4ivitades seega andmetehingu ja l\u00f5puks sisestades dokumenti postituste pealkirjad koos nende linkidega.<\/p>\n<p>Algusest peale on see erinev: parameetrile edastatud anon\u00fc\u00fcmne funktsioon <code>test<\/code>saab <code>done<\/code>parameetri. See on tegelikult funktsioon, mis kutsutakse v\u00e4lja, kui me testi l\u00f5petame. Jest ootab <code>done<\/code>enne testi l\u00f5petamist, kuni talle helistatakse. Kui <code>done<\/code>seda kunagi ei kutsuta, eba\u00f5nnestub test ajal\u00f5pu veaga. See on meie jaoks huvitav, kuna testime koodi, mis h\u00f5lmab <code>fetch<\/code>, mis on as\u00fcnkroonne funktsioon.<\/p>\n<pre><code>test( 'if posts are fetch, inserts them', done =&gt; {\n    wpJestTests = { posts: 5 };\n    const mockClassListAdd = jest.fn();\n    const divElem = {\n        tagName: 'DIV',\n        classList: { add: mockClassListAdd },\n        innerHTML: ''\n    };\n    const mockQuerySelector = jest.spyOn( document, 'querySelector') .mockImplementation( () =&gt; divElem );\n\n    expect( wpJestTestsInit() ).toBe( true );\n\n    process.nextTick(() =&gt; {\n        expect( mockQuerySelector ).toHaveBeenCalledTimes( 1 );\n        expect( global.fetch ).toHaveBeenCalledTimes( 1 );\n        expect( mockClassListAdd ).toHaveBeenCalledTimes( 1 );\n        expect( divElem.innerHTML.match( \/test-[1-5]\/g ).length ).toBe( 5 );\n\n        done();\n    });\n} );<\/code><\/pre>\n<p>Globaalne <code>wpJestTests<\/code>on defineeritud ja meie pilkanud <code>document.querySelector<\/code>tagastab n\u00fc\u00fcd selle, mis sarnaneb HTML-elemendiga, paaris- <code>classList<\/code>ja <code>add<\/code>alammeetodiga.<\/p>\n<p>Helistame <code>wpJestTestsInit<\/code>ja eeldame, et see l\u00f5peb \u00f5igesti. N\u00fc\u00fcd, kuna see on as\u00fcnkroonne, <code>fetch<\/code>kasutame <a href=\"https:\/\/nodejs.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Node.js<\/a> -i. In Node.js on j\u00e4rjekord, mis k\u00e4ivitatakse p\u00e4rast seda, kui k\u00f5ik praeguse s\u00fcndmusets\u00fckli s\u00fcndmused on l\u00f5ppenud. See on suurep\u00e4rane, sest k\u00f5ik meie lubadused saavad siis lahendatud, mis on t\u00e4pselt see, mida vajame selle koodi testimiseks, mis h\u00f5lmab .<code>process.nextTick<\/code><a href=\"https:\/\/nodejs.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external\"><\/a><code>nextTick``fetch<\/code><\/p>\n<p>\u00dclej\u00e4\u00e4nud on rohkem v\u00e4ited tagamaks, et <code>querySelector<\/code>leiti midagi, millega t\u00f6\u00f6tada, mida <code>fetch<\/code>t\u00f5esti kutsuti, et loendisse lisati klass ja et meie postituste pealkirjad ja lingid sisestati vastavasse HTML-i elementi. Kui k\u00f5ik on tehtud, helistame <code>done<\/code>ja meie as\u00fcnkroonne test l\u00f5peb.<\/p>\n<h2>K\u00e4ivitage oma Jesti testid<\/h2>\n<p>N\u00fc\u00fcd saate kirjutada<\/p>\n<p><code>npm run test<\/code><\/p>\n<p>ja Jest k\u00e4ivitab teie WordPressi pistikprogrammi JavaScripti \u00fchikutestid<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-157897-61e6c3c169e87.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-157897-61e6c3c169e87.png\" alt=\"Lihtsad JavaScripti \u00fcksuste testid WordPressis koos Jestiga\" ><\/a><\/p>\n<h2>J\u00e4reldus<\/h2>\n<p>Seega on Jest suurep\u00e4rane ja lihtne lahendus meie WordPressi pistikprogrammide v\u00f5i teemade JavaScripti koodi katvate testide kirjutamiseks. Aga seal on veel. Kui kirjutame oma pistikprogrammi jaoks Reacti rakendust, v\u00f5iksime soovida selle kohta v\u00e4iteid. Ka Jest saab teatud m\u00e4\u00e4ral aidata ja kui vajame rohkem, saame lisada oma t\u00f6\u00f6riistadesse Enzyme&#8217;i ja hakata sellega integratsiooniteste kirjutama.<\/p>\n<p>Palun annetage!<\/p>\n<p>Kui see oli teile kasulik, ostke mulle kohvi <img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" alt=\"Lihtsad JavaScripti \u00fcksuste testid WordPressis koos Jestiga\" \/>, et saaksin \u00e4rkvel p\u00fcsida ja teile kasulikke \u00f5petusi koostada!<\/p>\n<p>3,00 dollarit<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/startfunction.com\" class=\"external external_icon\">startfunction.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tagage oma WordPressi pistikprogrammi JavaScripti koodi stabiilsus, kirjutades Jesti abil JavaScripti \u00fchikutestid.<\/p>\n","protected":false},"author":1,"featured_media":157898,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,749,729,1017,894,842,863],"tags":[1165],"class_list":["post-231680","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-avatud-laehtekoodiga","category-javascript-4","category-kasulikud-saidid","category-kood","category-opetused","category-wordpress-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/231680","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/comments?post=231680"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/231680\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/157898"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=231680"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=231680"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=231680"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}