jasmine framework tutorial including jasmine jquery with examples
Questo articolo tratta Jasmine Testing Framework e i suoi costrutti. Inoltre, scopri il pacchetto Jasmine-Jquery che estende Jasmine per testare le applicazioni Jquery:
Abbiamo imparato tutto Karma nel nostro precedente tutorial di questa serie.
In questo tutorial impareremo come usare Jasmine per scrivere test per un'applicazione web JavaScript e impareremo anche come usare il pacchetto basato su nodi Jasmine-Jquery per testare l'applicazione web Jquery.
Qui ci concentreremo principalmente sui costrutti di base di Jasmine per la scrittura di test.
quali altri provider di posta elettronica ci sono
Iniziamo!!
Cosa imparerai:
Cosa sono i framework di test?
I framework di test sono suite di programmi o pacchetti che facilitano il test di un altro programma per garantirne la qualità. Ogni piattaforma di programmazione ha il proprio framework di test, come avrai imparato dal nostro precedente tutorial.
Esistono diversi set di test che possono essere eseguiti su qualsiasi sistema software. Esempi di tali test includono test unitari, test end to end (e2e), ecc Qui per ulteriori dettagli.
Esempi di framework di test per applicazioni JavaScript includono Mocha, Jasmine, stagista, jest, Qunit, ecc.
Introduzione a Jasmine Framework
Ci sono diversi approcci di sviluppo disponibili nello scenario attuale. Di questi, due degli approcci di sviluppo più popolari includono Test-Driven Development (TDD) e Behaviour Driven Development (BDD).
Lo sviluppo basato sui test è un approccio di sviluppo in cui prima scriviamo i test e poi li eseguiamo. Ogni test fallisce alla sua prima esecuzione perché le funzioni che utilizza non sono state ancora scritte.
Quindi scriviamo le funzioni e rieseguiamo i test. Qui, alcuni dei test falliscono e gli altri passano. Continuiamo a refactoring del codice per far passare tutti i test.
Anche lo sviluppo guidato dal comportamento segue lo stesso approccio. L'unica differenza è che BDD è scritto per soddisfare i proprietari del software (orientato al cliente / al business), ovvero per soddisfare le funzionalità del software con i requisiti aziendali o il comportamento previsto.
Considerando che TDD è scritto per soddisfare gli sviluppatori del software in modo che si possa essere certi che le funzioni del software che vengono utilizzate nella costruzione delle caratteristiche stanno producendo risultati accurati, stabili e affidabili.
Vedere Qui per saperne di più su TDD vs BDD.
Jasmine è un framework di test JavaScript basato sul comportamento, che semplifica la scrittura di test e non dipende da nessun altro framework.
Esistono due modi per utilizzare Jasmine per scrivere i test. Un modo è utilizzare la versione standalone fornita con specRunner.html (che visualizza i risultati dei test in un browser). L'altro modo è semplicemente installare Jasmine, scrivere i tuoi test ed eseguirlo con un test runner come Karma per ottenere i risultati visualizzati nella finestra della console.
Vedremo entrambi i modi di utilizzare Jasmine nel nostro prossimo tutorial.
Costrutti base di gelsomino per prove di scrittura
Di seguito sono elencati i vari costrutti di Jasmine per i test di scrittura.
Vediamo!!
# 1) descrive: Questo costrutto viene utilizzato per scrivere una suite di test. Una suite di test è una raccolta di più test. 'Descrivere' è una funzione in sé che accetta due parametri: Il nome della suite e una funzione .
Il parametro funzione contiene una raccolta di test raggruppati nella suite di test.
# 2): Questo costrutto viene utilizzato per scrivere una specifica di prova. Una specifica di test è un insieme di costrutti che stanno testando un'aspettativa particolare o minuscola per un sistema.
Come il costrutto descrivere, accetta anche due parametri: Il nome del test e la funzione che contiene le asserzioni che valutano se l'aspettativa è soddisfatta o meno.
# 3) aspettati : Questo costrutto aiuta a verificare se le aspettative del sistema software sono soddisfatte o meno.
Prende un parametro chiamato effettivo (che è il risultato che il sistema software sta restituendo) e quindi è concatenato con un altro costrutto chiamato matcher (risultato atteso).
# 4) Partite : Questa è una raccolta di costrutti a cui è incatenato il costrutto wait. Determina se l'aspettativa è soddisfatta o meno.
Questi costrutti prendono il valore atteso del test più vicino da eseguire e lo confrontano con il valore effettivo ottenuto durante l'esecuzione del test. Clic Qui per un elenco completo dei costrutti di matcher di Jasmine
# 5) prima di ogni : Questo è un costrutto globale, fornito da Jasmine per aiutarti a mantenere i tuoi test ASCIUTTI (non ripetere te stesso). Questo costrutto viene normalmente utilizzato nel parametro funzione del costrutto descrivere.
Qualsiasi codice all'interno viene eseguito una volta prima dell'esecuzione delle specifiche nelle suite. Quindi, qualsiasi codice che desideri eseguire prima di tutte le specifiche nella suite dovrebbe essere posizionato qui.
# 6) dopo ogni: Questo costrutto è lo stesso di beforeEach e la differenza è che il codice che contiene viene eseguito dopo ogni codice una volta eseguito il costrutto di descrizione.
# 7) questo : Questo costrutto è un oggetto vuoto che può essere utilizzato per condividere valori tra i costrutti 'beforeEach', 'afterEach' e 'it' in qualsiasi suite di test. Ogni suite di test ha il proprio oggetto e l'oggetto viene resettato per vuoto prima che le suite di test vengano eseguite.
# 8) xdescribe : Questo costrutto viene utilizzato per disabilitare le suite software. Dice semplicemente al test runner di saltare la suite di test e quindi il suo risultato non viene mostrato e considerato.
qual è il miglior pulitore di registro
# 9) colpisci : Questo costrutto viene utilizzato per indicare una specifica in una suite come specifica in sospeso. Una specifica in sospeso è una specifica che non verrà eseguita, ma il cui nome verrà visualizzato nel risultato del test come in sospeso.
Inoltre, se in una specifica viene chiamata la funzione in sospeso, la specifica viene contrassegnata come specifica in sospeso. Anche qualsiasi specifica dichiarata senza un corpo della funzione viene contrassegnata come in sospeso.
# 10) spyOn : Questo costrutto viene utilizzato per creare una spia Jasmine. Le spie sono prese in giro. I mock sono oggetti falsi creati per rappresentare o imitare l'oggetto reale. I mock sono necessari per evitare i costi generali di creazione dell'oggetto reale che rappresentano.
L'essenza del test unitario di un codice è vedere come si comporta una funzione in diverse condizioni indipendentemente dalle altre unità collegate o saranno collegate ad essa.
Pertanto, eseguiamo test di unità front-end per vedere come si comporterà un'unità del front-end del nostro prodotto software indipendentemente dalle altre unità front-end che saranno collegate o sono collegate ad essa.
Durante questo test, effettuiamo chiamate a vari argomenti e funzioni che possono dipendere da altre funzioni e oggetti come connessioni di rete, origini dati e file.
Per soddisfare queste dipendenze (in modo da poter eseguire test di unità front-end), è necessario rendere disponibili le risorse richieste. Quindi, adottiamo mock per imitare gli oggetti del mondo reale ed evitare il costo generale della loro effettiva creazione.
Si noti che a un livello semplice, spyOn viene utilizzato per verificare se una funzione dipendente viene effettivamente chiamata e questa funzione dipendente potrebbe essere solo una semplice funzione definita sull'oggetto che stiamo spiando.
La funzione spyOn accetta due parametri: l'oggetto che viene spiato e la funzione di dipendenza che contiene che viene controllata per assicurarsi che la nostra funzione lo chiami.
Le spie esistono nella suite o nella specifica in cui è definita. Dopo che la suite o la specifica vengono eseguite, la spia smette di esistere.
# 11) createSpy: Questo costrutto ha lo stesso scopo di spyOn, ma la differenza è che questa funzione rende possibile sostituire la funzione dipendente con una falsa per il test.
Perché devo farlo? Ciò è utile quando la dipendenza originale dipende anche dalle altre risorse che non sono disponibili nel contesto del test.
Questa funzione è accessibile utilizzando l'oggetto Jasmine con un punto, ovvero Jasmine.createSpy (parametri). Richiede un solo parametro, che è una stringa che rappresenta il nome della dipendenza per la quale stiamo creando il mock.
Nota che dopo aver creato una spia, la spia alla prima chiamata ritorna indefinita, poiché si presume che la prima chiamata sia la sua formazione. Quindi, dopo le chiamate successive, la funzione restituisce il valore effettivo. Vedi maggiori dettagli mentre lo esploriamo di seguito.
Caratteristica doppia funzione del test del gelsomino
I costrutti spyOn e createSpy rendono possibile la creazione di mock (per dipendenza). Questa non è altro che testare due funzioni in un test, da qui l'istruzione 'test doppia funzione'.
L'altra parola che può essere usata per riferirsi a mock è 'stub'.
Spia Matchers: Esistono diversi matcher che soddisfano la necessità di interagire con le spie. Loro includono: 'ToHaveBeenCalled' e 'toHaveBeenCalledWith' .
-
- toHaveBeenCalled : Viene utilizzato in una specifica per determinare che è stata chiamata la dipendenza spiata.
- toHaveBeenCalledWith : Viene utilizzato in una specifica per determinare che la dipendenza spiata è stata chiamata con un certo insieme di parametri.
Visitare Qui per una descrizione dettagliata di tutti i costrutti di Jasmine.
diversi tipi di test in qa
Due modi per usare il gelsomino
Esistono due modi per scrivere i test Jasmine. Uno è usare Jasmine come distribuzione standalone tramite specRunner e l'altro sta usando Jasmine con test runner.
Diamo prima un'occhiata all'esecuzione dei test Jasmine tramite specRunner.
Come utilizzare la distribuzione autonoma di Jasmine?
Clic Qui , quindi scarica la distribuzione standalone facendo clic su Jasmine-standalone .
Decomprimere il file nella cartella del progetto. Scoprirai che aggiunge queste directory alla directory del progetto: lib, src e spec; e aggiunge anche questi file: specRunner.html e MIT.LICENSE.
La directory lib contiene la libreria Jasmine che esegue i test contenuti nei file di test aggiunti al file specRunner.html. Il file specRunner.html consente di eseguire il test e visualizzare il risultato sul browser in un formato di pagina Web anziché nella finestra della console.
La directory src contiene i codici sorgente front-end e la directory spec contiene i file di test scritti utilizzando le suite di test Jasmine. Per impostazione predefinita, puoi vedere alcune suite di test e file all'interno delle directory ma non li useremo, scriveremmo i nostri test nei nostri tutorial successivi.
Usare Jasmine con un test runner
Questo è il secondo modo di utilizzare Jasmine, in cui si configura un test runner come Karma e lo si alimenta con il file sorgente e il file delle specifiche di test per eseguire i test.
Quindi, puoi visualizzare i risultati e generare rapporti utilizzando Istanbul o pubblicare i risultati dei test su coveralls.io.
Introduzione a Jasmine-Jquery
Jasmine-Jquery è un pacchetto node che aiuta il test di codici front-end costruiti con jquery. In un certo senso, estende il framework Jasmine per essere adatto per i test front-end di Jquery.
Le estensioni che aggiunge al framework Jasmine includono:
- Un set di corrispondenze personalizzate per il framework Jquery, come toBeChecked, toBeDisabled, toBeEmpty, ecc.
- Un'API per la gestione di dispositivi HTML, CSS e JSON nelle nostre specifiche.
Ora la domanda è 'che cos'è un'API?' Un'API (application programming interface) è un'interfaccia che ti consente di accedere a determinate funzioni che potrebbero richiedere tempo e risorse per essere create da zero.
Un'altra domanda è cosa sono gli infissi? I dispositivi sono stati predefiniti di un oggetto che di solito creiamo durante la scrittura dei test in modo da stabilire una linea di base (un ambiente ben noto e fisso) rispetto alla quale vengono eseguiti i test in modo da rendere i risultati ripetibili.
Vedere Qui per maggiori dettagli sugli abbinamenti personalizzati e sulle API.
Conclusione
In questo tutorial, abbiamo cercato di capire cos'è un framework di test e abbiamo introdotto Jasmine come framework di test JavaScript. Abbiamo esaminato diversi costrutti di Jasmine che possono essere utilizzati per scrivere specifiche di test e abbiamo finalmente introdotto Jasmine-Jquery, un pacchetto basato su nodi che estende Jasmine per poter testare le applicazioni Jquery.
Asporto
- Un framework di test è una suite di programmi o pacchetti che facilitano il test del software per garantire la qualità del software sviluppato.
- Jasmine è uno strumento di sviluppo basato sul comportamento che fornisce costrutti che facilitano la scrittura di specifiche di test per applicazioni JavaScript.
- Lo sviluppo basato sui test è un approccio di sviluppo in cui prima scriviamo i test e poi li eseguiamo. Ogni test fallisce alla sua prima esecuzione perché la funzione che utilizza non è stata ancora scritta. Quindi scriviamo le funzioni e rieseguiamo i test. Qui, alcuni dei test falliscono e altri passano. Quindi, continuiamo a refactoring del codice finché tutti i test non vengono superati.
- Un approccio di sviluppo guidato dal comportamento è un approccio di sviluppo in cui vengono scritti test per accertare che le funzionalità del software si comportino come previsto da tutte le parti interessate.
- Jasmine-Jquery è un pacchetto di nodi che aiuta il test di codici front-end creati con Jquery.
Tutorial successivo
Nel nostro prossimo tutorial, esploreremo i modi di utilizzare questi due strumenti (Jasmine e Karma) per scrivere le specifiche di test per un progetto tipico. Vedremo anche come utilizzare gli altri strumenti come gulp, browserify, ecc. Che sono necessari per avere i nostri test attivi e funzionanti.
Tutorial PREV | PROSSIMO Tutorial
Lettura consigliata
- 8 Migliori strumenti di sviluppo guidato dal comportamento (BDD) e framework di test
- Come i tester sono coinvolti nelle tecniche TDD, BDD e ATDD
- TDD Vs BDD - Analizza le differenze con esempi
- Framework BDD (Behaviour Driven Development): un tutorial completo
- Come scrivere un documento di strategia di test (con modello di strategia di test di esempio)
- 10 migliori strumenti di test API nel 2021 (strumenti di test API SOAP e REST)
- Tutorial sul test delle API: una guida completa per principianti
- Tutorial Python DateTime con esempi