Programiranje

10 zanesljivih orodij za preizkus JavaScript

Potreba po preizkusu kode JavaScript je enostavna. Kako drugače preprečiti napake in zagotoviti nemoteno delovanje aplikacij v brskalniku ali na Node.js? Na srečo imajo razvijalci na voljo številne možnosti, ko gre za testiranje JavaScript.

Testni tekači in okviri za enotno testiranje, integracijsko testiranje in funkcionalno testiranje so na voljo za ekosistem JavaScript, s pokritostjo za Node.js in brskalnike ter ogrodja Angular in React. Sledi 10 številnih omembe vrednih možnosti, ki jim morajo razvijalci JavaScript pomagati pri preizkušanju svojih aplikacij.

AVA

AVA je preskusni program za Node.js, ki ponuja jedrnat API, podroben izpis napak in podporo za nove jezikovne funkcije in izolacijo procesov. AVA je najbolj primeren za testiranje modulov Node.js in strežniških aplikacij, morda pa ne za testiranje aplikacij uporabniškega vmesnika. AVA med svojimi zmožnostmi ponuja funkcijo, s katero je test označen kot »opravilo«. Vsak zagon preizkusne datoteke je ločen postopek. Druge navedene prednosti vključujejo minimalizem in hitrost AVA-ja, preprosto sintakso preizkusa in zmožnost sočasnega izvajanja testov. AVA ima tudi podporo za asinhnične funkcije in opazljive elemente - vrsta, ki jo je mogoče opazovati, se lahko uporablja za modeliranje potisnih virov podatkov, kot so dogodki DOM.

Namestite AVA

Navodila za namestitev AVA najdete na strani projekta GitHub.

Kumara.js

Izvedba JavaScript testnega orodja Cucumber Cucumber.js deluje na vzdrževanih različicah Node.js in v sodobnih spletnih brskalnikih. Projekt Cucumber navaja prednosti, vključno s komunikacijo v skupini in zmožnostjo izvajanja samodejnih testov, napisanih v "navadnem" jeziku, kar pomeni, da jih lahko prebere vsak član ekipe. Tako je mogoče izboljšati komunikacijo, sodelovanje in zaupanje. Cucumber.js vključuje izvršljivo datoteko za zagon vaših testnih zbirk (imenovane funkcije), zato ne deluje, če je nameščena globalno. (V datotekah za podporo je treba navesti kumare, globalno nameščenih modulov pa ne.)

Namestite Cucumber.js

Navodila za namestitev Cucumber.js so na voljo na GitHub.

Encim

Encim je pripomoček za testiranje knjižnice uporabniškega vmesnika React JavaScript. Namenjen je lažjemu preizkušanju izhoda komponent React. Razvijalci lahko manipulirajo, premikajo in simulirajo čas izvajanja glede na izhodne podatke. Encimski API posnema jQuery API za manipulacijo in preusmerjanje DOM. Encim ni zadržan glede testnega tekača ali knjižnice trditev. Če razvijalci želijo uporabiti encim s trditvami po meri in priročnimi funkcijami za testiranje komponent React, lahko razmislijo chai-encim z Mocha / Chai, jasmin-encim z jasmino, oz je-encim z Jestom. Encim se lahko uporablja tudi za testiranje komponent React Native.

Namestite Enzyme

Navodila za namestitev encima najdete na GitHub.

Karma

Karma je preizkusni program za JavaScript, ki omogoča izvajanje kode v več brskalnikih. Podprti so vsi glavni brskalniki, vključno z mobilnimi brskalniki. Razvijalci, ki stojijo za projektom, pravijo, da Karma ponuja okolje, v katerem razvijalcem ni treba nastaviti veliko konfiguracij, ampak lahko pišejo kodo in dobijo takojšnje povratne informacije s testov. Karma je zasnovana za testiranje na nizki ravni (enota). Karma ni testni okvir ali knjižnica trditev, zato zažene strežnik HTTP in ustvari datoteko preizkusnega teka iz priljubljenega testnega okvira razvijalca. Vtičniki so na voljo za ogrodja, kot so Jasmine, Mocha in QUnit.

Namestite Karmo

Navodila za namestitev Karme so na voljo na GitHub.

Jasmin

Jasmine se zaračunava kot "vedenjsko" usmerjen okvir za testiranje JavaScript-a. Ni odvisen od drugih okvirov JavaScript in ne potrebuje DOM-a. Njeni zagovorniki njegovo sintakso navajajo kot enostavno pisanje testov. Jasmine, ki ga vzdržuje Pivotal Labs, je primeren za testiranje spletnih mest, projektov Node.js in vsega drugega, kjer lahko deluje JavaScript. Jasmine naj bi olajšal testiranje v različnih primerih uporabe in brskalnikih ter je agnostičen za ogrodje JavaScript, ki razvijalcem omogoča testiranje kode iz React ali Angular ali katere koli druge knjižnice JavaScript. Jasmine si prizadeva za minimalne odvisnosti, hkrati pa ostaja majhna in vzdržna.

Namestite Jasmine

Navodila za namestitev Jasmine in začetek uporabe Jasmine najdete na GitHub.

Jest

Jest se zaračuna kot celovita preskusna rešitev JavaScript, ki za večino projektov JavaScript deluje brez primerov in brez konfiguracije. Preskusi imajo edinstveno globalno stanje in jih je mogoče izvajati vzporedno. Prej neuspešni testi se najprej zaženejo, pri čemer se zavodi reorganizirajo glede na dolžino testnih datotek. Deluje samo s priljubljenimi tehnologijami JavaScript, vključno z Angular, Babel, Node.js, React in Vue. Preskusi se lahko izvajajo, da se spremljajo veliki predmeti, posnetki pa živijo ob testih ali so vdelani v vrstici. V testne datoteke Jest v globalno okolje vnese metode in predmete, pri čemer jih ni treba uvoziti.

Namestite Jest

Navodila za namestitev Jest najdete na GitHub.

Luna

Luna je samozavestni okvir za testiranje enot za JavaScript, ki ne zahteva konfiguracije. Razvijalci lahko začnejo prve enote v nekaj minutah, piše v dokumentaciji izdelka. Poročila o pokritosti kode se ustvarijo brez namestitve drugih modulov. Preskusi morajo biti napisani kot moduli ES6, pri čemer se preskusi privzeto izvajajo v brskalniku. Podprta je sočasnost, vzporedno se izvajajo preskusne skupine. Luna je bila delno navdihnjena z vgrajenim testiranjem, ki je na voljo za Googlov jezik Go. Luna ne omogoča prevajanja, zato ne bo delovala z CoffeeScript ali TypeScript. Manjka tudi podpora za starejše brskalnike.

Namestite Luna

Navodila za namestitev Lune so na voljo na GitHub.

Mocha

Mocha, testni okvir, ki deluje na Node.js in v brskalniku, obljublja, da bo testiranje asinhrone kode "preprosto in zabavno". Preizkusi se izvajajo zaporedno, kar po mnenju zagovornikov omogoča natančno in prilagodljivo poročanje, hkrati pa preslikane nezajete izjeme v natančne testne primere. Za neprekinjeno testiranje lahko razvijalci z orodjem Wallaby.js omogočijo sprotno pokritje kode za Mocha s katero koli knjižnico trditev. Mocha se integrira tudi z ogrodji aplikacij, na primer prek Konacha, ki razvijalcem omogoča uporabo Moche za testiranje JavaScripta v aplikacijah Ruby on Rails. Na voljo so tudi številni vtičniki za urejevalnike, na primer razširitev stranske vrstice Mocha za kodo Visual Studio.

Namestite Mocha

Navodila za namestitev Moche in dokumentacija za številne funkcije Mocha so na voljo na spletni strani projekta.

Kotomer

Protractor je celovit testni okvir za Angular in njegovega predhodnika, AngularJS. Preizkusi se izvajajo proti aplikacijam v brskalniku, pri čemer Proctractor deluje tako, kot bi to storil uporabnik. Podprte so lokator-specifične strategije lokatorjev za preskušanje kotnih elementov brez kakršne koli nastavitve. Zmogljivost samodejnega čakanja omogoča, da Protractor izvede naslednji korak v testu, ko spletna stran zaključi čakajoče teste. Protractor je bil zgrajen na vrhu WebdriverJS, JavaScript implementacije orodja za avtomatizacijo brskalnika Selenium, ki se uporablja za testiranje.

Namestite kotomer

Navodila za namestitev Protraktorja najdete na spletni strani Protractor.

QUnit

QUnit je preskusni okvir enote JavaScript, ki ga uporabljajo projekti JQuery, jQuery UI in jQuery Mobile. Pravzaprav je QUnit prvotno kot del jQueryja razvil izumitelj jQuery John Resig. QUnit se zaračunava hitro in enostavno za uporabo, z API-jem, ki je samozavesten, a prožen in razširljiv, in se lahko uporablja za testiranje katere koli generične kode JavaScript. Ko preizkus ali trditev ne uspe, QUnit obljubi, da bo poslal povratne informacije v najkrajšem možnem času z dovolj podrobnostmi, da bo odkril težavo. Metode uveljavljanja v QUnit sledijo specifikaciji preskušanja enot CommonJS. QUnit podpira brskalnike, podprte z jQuery 3.x, vključno z različicami Chroma, Edgea, Firefoxa, Internet Explorerja in Safarija.

Namestite QUnit

QUnit lahko naložite in namestite s spletnega mesta QUnit ali z jQuery.cdn.

$config[zx-auto] not found$config[zx-overlay] not found