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.

  • 🔘 Ruolo del quadro di riferimento: Jasmine mette alla prova qualsiasi cosa JavaScript senza browser, DOM o librerie di supporto.
  • ☑️ Configurazione dell'ambiente: Installa il modulo, esegui jasmine init, quindi esamina il file spec/support/jasmine.json.
  • ✅ Schema di specifica: describe nomina una suite, definisce una specifica, expect verifica il risultato.
  • 🧪 Abbinatori: Essere, Uguale, Contenere, Gettare e Essere Chiamato coprono la maggior parte delle asserzioni.
  • ️ Corridore moderno: Il pacchetto jasmine mantenuto sostituisce il modulo jasmine-node non più mantenuto.
  • 📊 Scelta del quadro di riferimento: Jasmine invia asserzioni e spie, mentre Jest aggiunge esecuzioni parallele e istantanee.

Tutorial sul framework Jasmine per il test unitario di applicazioni Node.js

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.

File di configurazione di Jasmine nella cartella di supporto spec che mostra la directory spec e i file spec_files

  1. Tieni presente che la directory spec è specificata qui. Come notato in precedenza, quando viene eseguito jasmine, cerca tutti i test in questa directory.
  2. 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.

Modulo Add.js che esporta la funzione AddNumber che restituisce la somma di due parametri

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

Code Spiegazione

  1. La parola chiave "exports" viene utilizzata per garantire che altri file possano effettivamente accedere alla funzionalità definita in questo file.
  2. 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.
  3. 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.

File add-spec.js con una suite describe e una specifica IT che afferma che AddNumber restituisce 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 Spiegazione

  1. Dobbiamo prima includere il nostro file Add.js in modo da poter testare la funzione "AddNumber" in questo file.
  2. 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”.
  3. La parte successiva consiste nel fornire una descrizione del nostro test utilizzando il metodo "it".
  4. 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.
  5. 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

  1. Per eseguire il test è necessario eseguire il comando jasmine.
  2. 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.

Output della console del comando jasmine che riporta il test add-spec eseguito.

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.

DOMANDE FREQUENTI

Jasmine legge `spec_dir` come prefisso, poi ogni pattern glob elencato in `spec_files`, quindi vengono eseguiti solo i file corrispondenti. I percorsi che iniziano con un punto esclamativo vengono esclusi e gli helper vengono caricati una volta prima degli `spec` per registrare la configurazione condivisa.

Dichiara la specifica asincrona e attendi la chiamata, restituisci una promessa o accetta una callback di completamento. guida asincrona avverte che done deve essere eseguito esattamente una volta, altrimenti gli errori si verificano sulla specifica sbagliata.

Dopo il runner, specifica un percorso o un pattern, ad esempio `npx jasmine spec/appSpec.js`. Il flag `--filter` accetta un pattern corrispondente al nome della descrizione, che consente di ottenere un feedback rapido mentre si lavora su una singola suite.

Migliori nodo di gelsomino Il pacchetto è in modalità di manutenzione, include ancora Jasmine 1.3 ed elenca Node.js 10 e 12 come versioni correnti. Il pacchetto ufficiale di Jasmine tracks il framework e le versioni di Node.js supportate.

Anteponendo una x a una specifica, come in xit o xdescribe, Jasmine la segnala come in sospeso. Anteponendo una f, come in fit o fdescribe, vengono eseguite solo le specifiche selezionate. Rimuovere entrambi i prefissi prima di confermare.

Gli assistenti IA descrivono in pochi secondi blocchi, matcher e casi limite di un modulo esistente e segnalano le suite che presentano errori intermittenti. Ogni specifica generata necessita comunque di revisione, perché un'affermazione sicura di un comportamento errato nasconde il difetto.

Copilota GitHub Completa automaticamente i corpi delle specifiche mentre digiti e la sua modalità agente può aprire una pull request che ripara le specifiche danneggiate dopo un refactoring. Considera il diff come una proposta ed esegui la suite autonomamente.

Impalcature angolari ancora specifiche Jasmine e Protractor prima che venisse archiviato, i team ora abbinano Jasmine a Karma per i browser o spostano i flussi del browser su Cypress e drammaturgo.

Riassumi questo post con: