Qual è il miglior framework di test da utilizzare con Node.js? [chiuso]


130

Ho esaminato l'elenco piuttosto lungo di framework di test su https://github.com/ry/node/wiki/modules#testing . Qual è l'esperienza con questi framework?

Ovviamente la possibilità di correre nel browser sarebbe un grosso vantaggio, ma sono principalmente interessato a Node.js. Qualcosa con un'inclinazione fortemente asincrona sarebbe fantastico.

Risposte:


70

Aggiornare:

La moka è la migliore secondo me.


Qual è l'esperienza con questi framework?

Ho suonato con expresso che è un framework di test piuttosto interessante che ha anche una copertura di test. È stato creato da TJ Holowaychuk, che è anche il creatore di Express.js ( framework follemente veloce (e piccolo) di sviluppo web JavaScript lato server basato su Node.js e Connect). Di recente ho visto che ha anche una fantastica libreria chiamata should.js che può essere utilizzata insieme a Expresso per un'esperienza di test ancora migliore.

Ovviamente, la possibilità di correre nel browser sarebbe un grosso vantaggio

Non credo che possa essere eseguito nel browser, ma non capisco perché vorresti eseguirlo all'interno del browser?

ma sono principalmente interessato a Node.js. Qualcosa con un'inclinazione fortemente asincrona sarebbe fantastico.

Citazione dell'espresso:

L'argomento passato a ciascun callback è beforeExit, che in genere viene utilizzato per affermare che i callback sono stati richiamati.

È possibile utilizzare beforeExit per testare le funzioni asincrone.


SUGGERIMENTO: Segui TJ Holowaychuk su GitHub , perché crea un ottimo codice open source.


Grazie per la risposta, ho provato expresso ma ho scoperto che il supporto asincrono non era molto intuitivo. (Per me comunque)
doffm

3
Attualmente sto provando i voti ( vowsjs.org ) che è stato più facile per me capire.
doffm,

vowjs sembrava anche un bel framework di test. Mi piace la funzione di copertura del test di espresso. Inoltre mi chiedo cosa non hai capito?
Alfred,

4
Dici che preferisci Mocha ora, ma perché?
Jonathan Arkell,

Provalo e basta. Mocha ha tutto :). Anche il supporto del browser, copertura del codice. Lo chiami, ce l'ha la moka!
Alfred,

40

Uso VowsJS, un framework BDD asincrono di facile utilizzo (Behavior Driven Development) e faccio il lavoro.

Da quello che vedo ultimamente è ciò che molti hanno scelto di testare i loro moduli NPM, quindi credo che finora sia uno dei migliori da usare.

Alcuni framework di test popolari che potrebbero essere utilizzati con NodeJS sono anche quelli:

Puoi anche vedere un elenco di framework di test JavaScript qui

Poche altre librerie che potrebbero aiutarti a scrivere codice migliore sono quelle:

C'è anche Bamboo CI Server di Atlassian che automatizza build e test. È un pacchetto per Apache / Tomcat (che sux perché usa Java e che lo rende molto pesante) inoltre non è gratuito ma ha una licenza di avviamento che costa $ 10 quindi credo che sia conveniente. È il più descritto tra tutti i server CI che ho trovato finora e supporta tutti i test unitari che supportano xUnit, il che significa che è possibile eseguire build / test per qualsiasi lingua con Bamboo.

Un'altra opzione per CI con NodeJS è Travis che molte persone usano per i loro progetti open source, come dice Un servizio di integrazione continua ospitato per la comunità open source.

C'è anche una discussione di gruppo di Google con l'argomento Integrazione continua per i progetti JS di nodo .


6
Una nota per le persone che pensano di usare Vows: non è stato aggiornato dal 2012
Code Commander

Hanno apportato alcune modifiche dopo . ultima uscita: settembre 2015
Andre Figueiredo,

nel 2020 ha avuto un cattivo accesso al sito ufficiale dei voti, forse è morto?
Lincoln,

wow, amico, sono passati MOLTI anni da allora, tutto ciò che ho potuto trovare su VowJS ora è questo: istavros.github.io/vowjs ma sfortunatamente, non posso suggerirti di usarlo al 2020. È obsoleto e lo farei fortemente suggerisci di controllare invece Mocha ( mochajs.org ), Jasmin ( jasmine.github.io ) e Jest ( jestjs.io ).
Panosru,

14

Sulla base dei commenti del richiedente, ho provato i voti e ho risolto molti problemi con i miei test asincroni. La sua capacità di mescolare test seriali e paralleli è eccezionale.

Assicurati di leggere attentamente il documento di orientamento, ma una volta capito, è flessibile, potente e produce risultati piacevoli e chiari.

UPDATE: vorrei anche incoraggiare le persone a controllare dovrebbe per la loro afferma. Consente asserzioni molto flessibili e molto leggibili ed è compatibile sia con Expresso e Vows, sia con la maggior parte degli altri framework di test.

(Sto pubblicando questo come una risposta separata nel caso in cui le persone non notino i commenti sulla risposta di Alfred.)

AGGIORNAMENTO 1/7/2015: Per quello che vale, da allora sono passato da Vows a Mocha e da Should a Chai. Mocha ha ora un supporto molto migliore per i test asincroni usando le promesse e Chai offre diverse opzioni di asserzione flessibili, tra cui l' expectAPI, per coloro a cui non piace modificare il prototipo dell'oggetto.


1
shouldapplica una proprietà non enumerabile denominata shouldal Objectprototipo, il che significa che tutti i valori / oggetti con cui hai a che fare sembrano leggermente diversi al momento del test e al momento della produzione. Anche se questo probabilmente "funziona" nella maggior parte dei casi, in linea di principio è una cattiva idea modificare i prototipi incorporati; farlo solo durante i test sembra sbagliato. È stato fatto solo in modo che possano avere una bella sintassi.
flusso

@flow dalla v2 è facile da usare shouldsenza estendere Object.prototype(è sufficiente chiamare require('should').noConflict()e utilizzare should.js come alternativa
prevista

6

Ho iniziato a usare Jasmine per i miei test JavaScript in particolare perché è piccolo e funziona sia nel browser che nel nodo. Ha anche un'API di reporting e matcher davvero solida, quindi è facile integrarsi con altri strumenti in futuro. Avere un framework di derisione buildin è anche utile poiché è spesso una delle prime cose che aggiungerei quando stavo usando qunit per TDD nel browser.


2

Se vuoi un vero framework BDD, forse considera Yadda . Si integra con moka, gelsomino, nodeunit, qunit, zombie e casperjs, per supportare file di caratteristiche, ad es.

   Scenario: provides the version of all services
      given service x is running
      and service y is running
      when I request the service versions
      then service x should be version 0.0.1
      and service y should be version 0.0.2

2

Ho usato nodeunit e la sua capacità di lavorare con funzioni asincrone è ragionevolmente semplice.

C'è una bella guida che dovrebbe prepararti a partire con nodeunit sul suo blog .

[ Nota: l'API è cambiata dal blogpost - setUp(callback)ed tearDown(callback)entrambi accettano un callback come argomento, che è necessario chiamare al termine della configurazione / smontaggio. ]


Guardando questo e dopo aver provato alcuni test delle funzioni mongoose.js in expresso, la preferenza di nodeunit per non eseguire tutti i test in parallelo e consentire i test setUp e tearDown sembra utile.
asparagino,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.