Jasmine Framework Výukový program: Testování jednotek s příkladem

⚡ Chytré shrnutí

Jasmína je řízena chováním JavaFramework pro testování skriptů, který spouští unit testy Node.js bez prohlížeče nebo DOMu s použitím bloků describe, specifikací a expect matcherů pro ověření, zda se každá exportovaná funkce chová tak, jak je zdokumentována.

  • 🔘 Role v rámci rámce: Jasmína testuje cokoli JavaSkript bez prohlížečů, DOMu nebo pomocných knihoven.
  • ☑️ Nastavení prostředí: Nainstalujte modul, spusťte init příkazu jasmine a poté zkontrolujte soubor spec/support/jasmine.json.
  • (Tj. Vzor specifikace: Funkce describe pojmenovává sadu, definuje specifikaci a funkce expect uplatňuje výsledek.
  • 🧪 Zápasníci: Metody toBe, toEqual, toContain, toThrow a toHaveBeenCalled pokrývají většinu asercí.
  • 🛠️ Moderní běžec: Spravovaný balíček jasmine nahrazuje nespravovaný modul jasmine-node.
  • 📊 Výběr rámce: Jasmine odesílá assertace a špiony, zatímco Jest přidává paralelní běhy a snapshoty.

Tutoriál k frameworku Jasmine pro jednotkové testování aplikací Node.js

Co je JasmineJS?

Jasmine je open-source a nejoblíbenější JavaRámec testování knihovny skriptů pro testování jakéhokoli druhu JavaAplikace skriptu. Jasmine dodržuje proceduru Behavior Driven Development (BDD), aby zajistila, že každý řádek JavaPříkaz skriptu je řádně testován na jednotku.

K čemu se Jasmine Framework používá?

Testování je klíčovým prvkem každé aplikace. Pro jednotkové testování Node.js je k dispozici framework s názvem Jasmine. Na začátku roku 2000 existoval framework pro testování JavaScénář aplikace s názvem JsUnit. Later tento framework byl upgradován a nyní je známý jako Jasmine.

Jasmín pomáhá v automatizaci Testování jednotek, což se stalo poměrně klíčovou praxí při vývojiping a nasazení moderních webových aplikací.

V tomto tutoriálu Jasmine se dozvíte, jak získat nastavení prostředí pomocí Jasmine a jak spustit testy Jasmine pro vaši první aplikaci Node.js.

Jasmine pro testování aplikací Node.js

Jasmine je Vývoj řízený chováním (BDD) testovací rámec pro JavaSkript. To ano ne spoléhat na prohlížeče, DOM nebo jiné JavaSkriptovací framework. Je tedy vhodný pro webové stránky, Node.js projekty nebo kdekoli, kde JavaSkript lze spustit. Chcete-li začít používat Jasmine, musíte si nejprve stáhnout a nainstalovat potřebné moduly Jasmine.

Jak nastavit testovací prostředí Jasmine

Dále v tomto tutoriálu o Node.js pro Jasmine budete muset inicializovat své prostředí a zkontrolovat konfigurační soubor Jasmine. Níže uvedené kroky ukazují, jak nastavit Jasmine ve vašem prostředí.

Krok 1) Nainstalujte moduly NPM
Musíte Nainstalujte NPM Modul jasmine pro použití frameworku Jasmine z aplikace Node. Chcete-li nainstalovat modul jasmine-node, spusťte níže uvedený příkaz.

npm install jasmine-node

Poznámka k verzi (2026): Výše uvedený historický příkaz stále funguje, ale jasmínový uzel Modul je v režimu údržby a obsahuje Jasmine 1.3, takže ho ponechte pouze pro starší projekty. Nová práce s Node.js nainstaluje udržovanou verzi. Jasmínový CLI jako dev závislost a volá ji přes npx:

npm install --save-dev jasmine
npx jasmine init

Jasmín 6.x je aktuální hlavní řada a podporuje Node.js 20, 22 a 24 a Node.js 24 je verze Active LTS v roce 2026.

Krok 2) Inicializujte prostředí Jasmine
Inicializace projektu – Tímto způsobem Jasmine vytvoří adresář spec a konfigurační soubor JSON. Adresář spec se používá k ukládání všech vašich testovacích souborů. Díky tomu bude Jasmine vědět, kde se všechny vaše testy nacházejí, a poté je bude moci odpovídajícím způsobem spustit. JSON Soubor se používá k ukládání specifických konfiguračních informací o Jasmine.

Pro inicializaci prostředí Jasmine spusťte následující příkaz

jasmine init

Krok 3) Zkontrolujte svůj konfigurační soubor.
Konfigurační soubor bude uložen ve složce spec/support jako jasmine.json. Tento soubor obsahuje výčet zdrojových souborů a souborů specifikací, které by měl Jasmine runner zahrnout.

Níže uvedený snímek obrazovky ukazuje typický příklad souboru jasmine.json pro Jasmine.

Konfigurační soubor Jasmine ve složce podpory specifikací zobrazující adresář spec a soubory spec_files

  1. Všimněte si, že zde je specifikován adresář spec. Jak již bylo zmíněno dříve, když jasmine běží, hledá všechny testy v tomto adresáři.
  2. Další věc, kterou je třeba poznamenat, je parametr spec_files – Ten označuje, že ať už jsou vytvořeny testovací soubory, měly by být připojeny klíčovým slovem 'spec'.

Poznámka ke konfiguraci: v Jasmine 6.x stejný soubor také akceptuje pomocníky, které se načtou jednou před každou specifikací, a env možnosti uchovávání bloků, jako například random a stopSpecOnExpectationFailure. Výchozí glob spec_files je **/*[sS]pec.?(m)jsa jiný soubor lze předat s –konfigurace nebo CESTA_KONFIGURACE_JASMINE proměnná.

Dále v tomto tutoriálu Jasmine framework se naučíme, jak používat Jasmine k testování aplikací Node.js.

Jak používat Jasmine k testování aplikací Node.js

Aby bylo možné použít testování jednotek Jasmine pro aplikace Node.js, je třeba dodržet řadu kroků.

V našem níže uvedeném příkladu definujeme modul, který sčítá 2 čísla, která je třeba otestovat. Poté definujeme samostatný soubor s testovacím kódem a poté pomocí Jasmine otestujeme funkci Add.

Krok 1) Definujte kód, který je třeba otestovat. Budeme definovat funkci, která sečte 2 čísla a vrátí výsledek. Tento kód bude zapsán do souboru s názvem „Add.js“.

Níže uvedený snímek obrazovky ukazuje hotový modul Add.js a stejný kód je opakován jako text pod ním.

Modul Add.js exportující funkci AddNumber, která vrací součet dvou parametrů

var exports=module.exports={};
exports.AddNumber=function(a,b)
{
return a+b;
};

Code Vysvětlení

  1. Klíčové slovo „exports“ se používá k zajištění toho, aby funkce definované v tomto souboru byly skutečně přístupné pro jiné soubory.
  2. Potom definujeme funkci s názvem 'AddNumber.' Tato funkce je definována tak, že přebírá 2 parametry aab. Funkce je přidána do modulu „exporty“, aby se funkce stala veřejnou funkcí, ke které mají přístup jiné aplikační moduly.
  3. Konečně děláme, že naše funkce vrací přidanou hodnotu parametrů.

Krok 2) Dále musíme definovat náš testovací kód Jasmine, který bude použit k otestování funkce „Add“ v souboru Add.js. Níže uvedený kód je třeba umístit do souboru s názvem add-spec.js.

HodnoceníDo testovacího souboru je třeba přidat slovo „spec“, aby ho Jasmine mohla detekovat.

Níže uvedený snímek obrazovky ukazuje stejný soubor se specifikací otevřený v editoru.

Soubor add-spec.js se sadou describe a specifikací IT, která uvádí AddNumber a vrací 11.

var app=require("../Add.js");
describe("Addition",function(){
it("The function should add 2 numbers",function() {
var value=app.AddNumber(5,6);
expect(value).toBe(11);
});
});

Code Vysvětlení

  1. Nejprve musíme zahrnout náš soubor Add.js, abychom v tomto souboru mohli otestovat funkci 'AddNumber'.
  2. Nyní vytváříme náš testovací modul. První část testovacího modulu má popsat metodu, která v podstatě dává název našemu testu. V tomto případě je název našeho testu „Addition“.
  3. Dalším krokem je poskytnout popis našeho testu pomocí metody 'it'.
  4. Nyní zavoláme naši metodu AddNumber a odešleme jí 2 parametry, 5 a 6. Ty budou předány naší metodě AddNumber v souboru Add.js. Návratová hodnota se poté uloží do proměnné s názvem value.
  5. Posledním krokem je provedení porovnání neboli samotného testu. Protože očekáváme, že funkce AddNumber vrátí hodnotu 11, definujeme ji pomocí metody expect(value).toBe(očekávaná hodnota).

Výstup

  1. Pro spuštění testu je potřeba spustit příkaz jasmine.
  2. Níže uvedený snímek obrazovky ukazuje, že po spuštění příkazu jasmine se zjistí, že existuje test s názvem add-spec.js, a tento test se spustí. Pokud se v testu vyskytnou nějaké chyby, zobrazí se odpovídající informace.

Výstup konzole příkazu jasmine s hlášením provedeného testu add-spec

Příklad Add používá jeden matcher, ale Jasmine nabízí celou sadu. V tabulce níže jsou uvedeny ty, které pokrývají téměř každé tvrzení, které napíšete.

Jasmínové párovací návnady, které budete používat nejčastěji

Porovnávání je porovnání, které následuje po expect(). Řetězec .not před libovolným porovnáváním jej invertuje, jako v expect(value).not.toBe(11).

dohazovači Co kontroluje Typické použití
být Přísná identita, stejné srovnání jako === očekávat(hodnota).toBe(11)
toEqual Hluboká rovnost objektů a polí očekávat(uživatel).toEqual({id: 1})
toContain Členství uvnitř pole nebo řetězce očekávat(soubory).toContain('add-spec.js')
k definování Hodnota není nedefinovaná očekávat(app.PřidatNumber).toBeDefined()
toThrow Zabalená funkce vyvolá chybu. očekávat(callAdd).toThrow()
toHaveByCalled Špion byl vyvolán alespoň jednou očekávat(logger.write).toHaveBeenCalled()

Dva zvyky zajišťují čitelnost chyb. Používejte toBe pouze pro primitiva a identické reference, protože dva objekty se stejným obsahem nikdy nebudou mít vztah ===. Používejte toEqual pro struktury a přidejte toHaveBeenCalledWith, když argumenty jsou stejně důležité jako samotné volání.

Příprava, demontáž a špioni v Jasmine

Skutečné sady potřebují sdílený stav a dvojité pro pomalé spolupracovníky. Jasmine poskytuje obojí bez jakéhokoli dalšího balíčku.

  • před každým a po každém spustit před a po každé specifikaci uvnitř bloku describe, což je přirozené místo pro přestavbu přípravků.
  • před všemi a po všem spouštějí se jednou pro celý blok, takže je rezervujte pro nákladné práce, jako je například otevírání spojení.
  • spyOn(objekt, 'metoda') nahrazuje skutečnou metodu metodou tracking double; přidejte .and.returnValue() pro kontrolu toho, co odpovídá.
  • jasmine.createSpy('jméno') vytvoří samostatný double pro zpětné volání, které nemá žádný objekt, ke kterému by se dalo připojit.
  • Asynchronní specifikace může být deklarován jako asynchronní a očekávaný, může vrátit promise nebo může přijmout zpětné volání typu done, které musí být voláno právě jednou.

Špioni se mezi specifikacemi resetují, takže sada nikdy neunikne do dalšího testu zablokovaná metoda. Tato izolace způsobuje, že selhávající specifikace poukazuje na jednu chybu místo na celý řetězec defektů, což je stejná disciplína popsaná v testování jednotky zásady.

Jasmína vs. Mocha vs. Žert

Jasmine je jedním ze tří dominujících rámců JavaTestování skriptů a volba obvykle závisí na tom, kolik kabeláže chcete vlastnit.

Vzhled Jasmín Moka existuje
Tvrzení Postaven v roce Přidává se, obvykle Chai Postaven v roce
Špioni a parodisté Postaven v roce Přidáno, obvykle Sinon Postaven v roce
Provedení Sériový Sériový Paralelní napříč procesy
snímky Ne Ne Ano
Společný domov Angular, prostý Node.js Flexibilní Node.js stacky React a moderní bundlery

Pick Moka když si chcete sestavit vlastní assertační a mocking stack a existuje když paralelní běhy, pokrytí a snímky jsou důležitější než kontrola konfigurace. Jasmine zůstává nejjednodušší možností, která se stále dodává kompletní, a proto je stále běžná v testování automatizace apartmá.

Nejčastější dotazy

Jasmine čte spec_dir jako prefix a poté každý glob uvedený ve spec_files, takže se spustí pouze odpovídající soubory. Cesty začínající vykřičníkem jsou vyloučeny a pomocné funkce se načtou jednou před specs pro registraci sdíleného nastavení.

Deklarujte specifikaci jako asynchronní a počítejte s voláním, vraťte promise nebo přijměte callback typu „done“. Průvodce asynchronními funkcemi varuje, že příkaz done se musí spustit přesně jednou, jinak selhání přistane na nesprávné specifikaci.

Za běžcem předejte cestu nebo objekt typu glob, například npx jasmine spec/appSpec.js. Příznak –filter přijímá vzor porovnávaný s názvem describe, což umožňuje rychlou zpětnou vazbu při práci na jedné sadě.

Jedno jasmínový uzel Balíček je v režimu údržby, stále obsahuje Jasmine 1.3 a jako aktuální verze uvádí Node.js 10 a 12. Oficiální balíček jasmine tracks framework a podporované verze Node.js místo toho.

Pokud před specifikaci přidáte prefix x, jako v xit nebo xdescribe, Jasmine ji ohlásí jako čekající. Pokud před ni přidáte prefix f, jako ve fit nebo fdescribe, spustí se pouze specifikace, na které se zaměříte. Před potvrzením (commitem) odstraňte oba prefixy.

Asistenti umělé inteligence vytvářejí koncepty popisů bloků, porovnávačů a okrajových případů z existujícího modulu během několika sekund a označují sady, které občas selhávají. Každá vygenerovaná specifikace stále vyžaduje kontrolu, protože sebevědomé tvrzení o nesprávném chování skrývá vadu.

GitHub Copilot Doplňuje těla specifikací během psaní a jeho agentský režim umožňuje otevřít pull request, který opraví poškozené specifikace po refaktorizaci. Považujte rozdíl za návrh a spusťte sadu sami.

Úhlové stále lešení Jasmine specifikace a ProtracTor používal Jasmine jako výchozí framework před archivací. Týmy nyní spárují Jasmine s Karmou pro prohlížeče nebo přesouvají toky prohlížeče do Cypress a dramatik.

Shrňte tento příspěvek takto: