Tutorial su Jasmine Framework: test unitari con esempio
⚡ Riepilogo intelligente
Jasmine è il comportamento guidato JavaFramework di test per script che esegue unit test di Node.js senza browser o DOM, utilizzando blocchi `describe`, `it specs` e matcher `expect` per verificare che ogni funzione esportata si comporti come documentato.
Cos'è JasmineJS?
Jasmine è un open source e il più popolare JavaFramework di test della libreria di script per testare qualsiasi tipo di JavaApplicazione script. Jasmine segue la procedura Behavior Driven Development (BDD) per garantire che ogni riga di JavaL'istruzione dello script è stata correttamente testata.
A cosa serve il Framework Jasmine?
Il testing è un elemento chiave per qualsiasi applicazione. Per il testing unitario di Node.js, il framework disponibile per il testing si chiama Jasmine. All'inizio del 2000, esisteva un framework per il testing JavaCopione applicazioni chiamate JsUnit. Later questo framework è stato aggiornato ed è ora noto come Jasmine.
Jasmine aiuta nell'automazione Test unitari, qualcosa che è diventata una pratica piuttosto fondamentale nello sviluppoping e implementando applicazioni web moderne.
In questo tutorial su Jasmine imparerai come configurare il tuo ambiente con Jasmine e come eseguire i test Jasmine per la tua prima applicazione Node.js.
Jasmine per testare le applicazioni Node.js
Jasmine è un Sviluppo guidato dal comportamento (BDD) quadro di test per JavaScript. Lo fa non è un fare affidamento su browser, DOM o altro JavaFramework di script. Pertanto, è adatto per siti web, Node.js progetti o ovunque JavaLo script può essere eseguito. Per iniziare a usare Jasmine, devi prima scaricare e installare i moduli Jasmine necessari.
Come impostare l'ambiente di test di Jasmine
Successivamente, in questo tutorial su Jasmine per Node.js, dovrai inizializzare il tuo ambiente ed esaminare il file di configurazione di Jasmine. I passaggi seguenti mostrano come configurare Jasmine nel tuo ambiente.
Passo 1) Installa i moduli NPM
Devi effettuare l' Installa NPM Modulo jasmine per utilizzare il framework Jasmine all'interno di un'applicazione Node. Per installare il modulo jasmine-node, eseguire il comando seguente.
npm install jasmine-node
Nota sulla versione (2026): il comando storico sopra funziona ancora, ma il nodo di gelsomino Il modulo è in modalità di manutenzione e include Jasmine 1.3, quindi conservalo solo per progetti legacy. Il nuovo lavoro su Node.js installa la versione mantenuta. Jasmine CLI come dipendenza di sviluppo e la richiama tramite npx:
npm install --save-dev jasmine npx jasmine init
Jasmine 6.x è la linea principale attuale e supporta Node.js 20, 22 e 24, e Node.js 24 è la versione LTS attiva nel 2026.
Passo 2) Inizializza l'ambiente Jasmine
Inizializzazione del progetto: in questo modo, Jasmine crea una directory spec e un file json di configurazione. La directory spec viene utilizzata per memorizzare tutti i file di test. In questo modo, Jasmine saprà dove si trovano tutti i test e potrà eseguirli di conseguenza. JSON Il file viene utilizzato per memorizzare informazioni di configurazione specifiche relative a Jasmine.
Per inizializzare l'ambiente Jasmine, eseguire il comando seguente
jasmine init
Passo 3) Esamina il tuo file di configurazione.
Il file di configurazione verrà archiviato nella cartella spec/support come jasmine.json. Questo file enumera i file sorgente e i file delle specifiche che desideri includere nel corridore Jasmine.
La schermata seguente mostra un esempio tipico del file jasmine.json per Jasmine.
- Tieni presente che la directory spec è specificata qui. Come notato in precedenza, quando viene eseguito jasmine, cerca tutti i test in questa directory.
- La cosa successiva da notare è il parametro spec_files – Questo indica che qualunque file di test venga creato, dovrebbe essere aggiunto la parola chiave 'spec'.
Nota di configurazione: in Jasmine 6.x lo stesso file accetta anche aiutanti, che si caricano una volta prima di ogni specifica e un ENV opzioni di blocco contenenti elementi come random e stopSpecOnExpectationFailure. Il glob predefinito spec_files è **/*[sS]pec.?(m)jse un file diverso può essere passato con –configurazione oppure JASMINE_CONFIG_PATH variabile.
Successivamente in questo tutorial sul framework Jasmine, impareremo come utilizzare Jasmine per testare le applicazioni Node.js.
Come utilizzare Jasmine per testare le applicazioni Node.js
Per utilizzare lo unit test Jasmine per le applicazioni Node.js, è necessario seguire una serie di passaggi.
Nell'esempio seguente, definiremo un modulo che somma due numeri che devono essere testati. Definiremo quindi un file di codice separato con il codice di test e useremo Jasmine per testare la funzione Add.
Passo 1) Definire il codice che deve essere testato. Definiremo una funzione che aggiungerà 2 numeri e restituirà il risultato. Questo codice verrà scritto in un file chiamato "Add.js".
Lo screenshot qui sotto mostra il modulo Add.js completato, e lo stesso codice è ripetuto come testo al di sotto di esso.
var exports=module.exports={}; exports.AddNumber=function(a,b) { return a+b; };
Code Spiegazione
- La parola chiave "exports" viene utilizzata per garantire che altri file possano effettivamente accedere alla funzionalità definita in questo file.
- Stiamo quindi definendo una funzione chiamata "AddNumber". Questa funzione è definita per accettare 2 parametri, a e b. La funzione viene aggiunta al modulo "esporta" per rendere la funzione pubblica a cui possono accedere altri moduli dell'applicazione.
- Stiamo finalmente facendo in modo che la nostra funzione restituisca il valore aggiunto dei parametri.
Passo 2) Successivamente, dobbiamo definire il nostro codice di test Jasmine, che verrà utilizzato per testare la nostra funzione "Add" nel file Add.js. Il codice seguente deve essere inserito in un file chiamato add-spec.js.
Note:La parola 'spec' deve essere aggiunta al file di test affinché possa essere rilevata da Jasmine.
Lo screenshot qui sotto mostra lo stesso file di specifica aperto in un editor.
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 Spiegazione
- Dobbiamo prima includere il nostro file Add.js in modo da poter testare la funzione "AddNumber" in questo file.
- Stiamo ora creando il nostro modulo di test. La prima parte del modulo di test consiste nel descrivere un metodo che sostanzialmente dà un nome al nostro test. In questo caso, il nome del nostro test è “Addizione”.
- La parte successiva consiste nel fornire una descrizione del nostro test utilizzando il metodo "it".
- Ora richiamiamo il nostro metodo AddNumber e passiamo due parametri, 5 e 6. Questi verranno passati al metodo AddNumber nel file Add.js. Il valore restituito verrà quindi memorizzato in una variabile chiamata value.
- Il passaggio finale consiste nell'eseguire il confronto o il nostro test vero e proprio. Poiché ci aspettiamo che il valore restituito dalla funzione AddNumber sia 11, lo definiamo utilizzando il metodo expect(value).toBe(il valore atteso).
Uscita
- Per eseguire il test è necessario eseguire il comando jasmine.
- Lo screenshot qui sotto mostra che, dopo l'esecuzione del comando Jasmine, verrà rilevata la presenza di un test chiamato add-spec.js e questo verrà eseguito di conseguenza. Se si verificano errori durante il test, questi verranno visualizzati.
L'esempio Add utilizza un singolo matcher, ma Jasmine ne include un set completo. La tabella seguente elenca quelli che coprono quasi tutte le asserzioni che scriverete.
Abbinatori di gelsomino che userai di più
Un matcher è il confronto che segue expect(). Concatena .not prima di qualsiasi matcher per invertirlo, come in expect(value).not.toBe(11).
| Corrispondente | Cosa controlla | Utilizzo tipico |
| essere | Identità rigorosa, lo stesso confronto di === | aspetta(valore).essere(11) |
| a Uguale | Uguaglianza profonda di oggetti e array | expect(user).toEqual({id: 1}) |
| contenere | Appartenenza all'interno di un array o di una stringa | expect(files).toContain('add-spec.js') |
| da definire | Il valore non è indefinito | aspettati(app.AddNumber).toBeDefined() |
| Da lanciare | La funzione incapsulata genera un errore | aspetta(callAdd).toThrow() |
| essere chiamato | Si è parlato di una spia almeno una volta. | aspettati(logger.write).toHaveBeenCalled() |
Due abitudini rendono leggibili gli errori. Usa toBe solo per i tipi primitivi e i riferimenti identici, perché due oggetti con lo stesso contenuto non sono mai ===. Usa toEqual per le strutture e aggiungi toHaveBeenCalledWith quando gli argomenti sono importanti quanto la chiamata stessa.
Allestimento, smontaggio e spie in Jasmine
Le suite di sviluppo reali necessitano di uno stato condiviso e di duplicati per i collaboratori più lenti. Jasmine offre entrambe le funzionalità senza bisogno di pacchetti aggiuntivi.
- prima di ogni e dopo ogni Eseguire prima e dopo ogni specifica all'interno di un blocco describe, che è il luogo naturale per ricostruire i fixture.
- prima di tutto e dopo tutto Eseguite il comando una sola volta per l'intero blocco, quindi riservateli per operazioni dispendiose come l'apertura di una connessione.
- spyOn(oggetto, 'metodo') sostituisce un metodo reale con un tracking double; aggiungi .and.returnValue() per controllare cosa restituisce.
- jasmine.createSpy('name') crea un double autonomo per una funzione di callback che non ha alcun oggetto a cui collegarsi.
- Specifiche asincrone può essere dichiarato asincrono e atteso, può restituire una promise oppure può accettare una callback di tipo "done" che deve essere chiamata esattamente una volta.
Le spie si resettano tra le specifiche, quindi una suite non lascia mai trapelare un metodo stubed nel test successivo. Questo isolamento è ciò che fa sì che una specifica fallimentare punti a un difetto invece che a una catena di essi, che è la stessa disciplina descritta nel unit test fondamentali.
Jasmine contro Mocha contro Jest
Jasmine è uno dei tre framework che dominano JavaTest dello script, e la scelta di solito si riduce a quanta cablatura si desidera gestire.
| Aspetto | Jasmine | Moca | Scherzare |
| Asserzioni | Costruito nel | Aggiunto, di solito Chai | Costruito nel |
| Spie e beffe | Costruito nel | Aggiunto, di solito Sinon | Costruito nel |
| Seriale | Seriale | Parallelamente attraverso i processi | |
| Istantanee | Non | Non | Si |
| Casa comune | Angular, Node.js semplice | Stack Node.js flessibili | React e i moderni bundler |
Pick Moca quando vuoi assemblare il tuo stack di asserzioni e mocking e Scherzare quando le esecuzioni parallele, la copertura e gli snapshot contano più del controllo della configurazione. Jasmine rimane l'opzione più leggera che arriva comunque completa, ed è per questo che rimane comune in test di automazione suite.




