Node.js Unit Testing [chiuso]


164

Esistono attualmente validi framework di test delle unità node.js (lato server js)? Sto cercando qualcosa di un po 'più profondo del modulo Assert fornito.

Risposte:


66

Ho finito per usare l' unità-nodo e ne sono davvero contento.

Inizialmente stavo usando Expresso ma il fatto che eseguisse dei test in parallelo ha causato alcuni problemi. (Ad esempio l'utilizzo di dispositivi di database non funziona bene in questa situazione).


25
Expresso non ti obbliga a eseguire test in parallelo. Dai da mangiare all'argomento --serial e li eseguirà tutti in ordine allegro.
einaros,

3
Ho appena scaricato e usato nodeunit ... fa esattamente quello che dice, ha funzionato per la prima volta ftw!
Michael Dausmann,

1
Nodeunit è un po 'strano nel richiedere ogni test per chiamare .done()imho.
Kos,

2
Se avessi iniziato un nuovo progetto ora probabilmente
userei

1
Nodeunit richiede di supportare i .done()test asincroni. Sono d'accordo che a volte può essere un po 'ingombrante, ma ha un ottimo motivo per farlo in questo modo.
L0j1k,

48

Stavo anche cercando un framework di test decente per il nodo e ho trovato Mocha . È il successore ufficiale di Expresso e sembra molto maturo.

Permette di collegare diverse librerie di asserzioni, offre ai giornalisti la copertura del codice e altre cose (è possibile collegare le proprie). Può eseguire la sincronizzazione o l'asincronizzazione e ha un'API concisa.

Ci proverò e riporterò indietro ...

MODIFICARE:

Dopo un'incredibile quantità di tempo dedicata ad altri progetti, sono finalmente tornato a un progetto Javascript e ho avuto il tempo di giocare con la moka. Posso seriamente raccomandare di usarlo. I test sono letti molto bene, l'integrazione con gulp è ottima e i test funzionano molto velocemente. Sono stato in grado di impostare esecuzioni di test automatiche stand-alone, interne al browser (browserify) e relativi rapporti di copertura del codice in circa mezza giornata (la maggior parte del tempo speso per capire come usare browserify da gulp). Per me, la moka sembra un'ottima scelta per un framework di test.

AGGIORNARE:

Sono ancora molto convinto di Mocha. L'integrazione con chai consente di inserire diversi stili di asserzione. Puoi verificare una configurazione funzionante in questo progetto github . Lo sto usando con karma ora, integrando il rapporto sulla copertura del codice, gli osservatori automatici e una buona integrazione con IntelliJ


Il collegamento al progetto github è interrotto. Potresti rinnovarlo, per favore?
karlisup,


15

Personalmente ho usato solo il modulo assert, ma mi ritrovo anche a desiderare di più. Ho guardato attraverso molti moduli di nodo e i framework di test di unità popolari sono nodi-unità e dovrebbero (che è fatto dallo stesso ragazzo di Expresso (forse un nome aggiornato?)

Anche i voti sembrano promettenti.


15
Ti ho votato solo per quel gioco di parole.
ThomasReggi,

15

Personalmente mi sono bloccato con Expresso , ma ci sono un sacco di diversi framework là fuori, che soddisfano la maggior parte degli stili di test.

Joyent ha un ampio elenco ; provaci.


1
Expresso è l'unico che ha senso per me e funziona correttamente con il codice asincrono. Ho provato voti e anche qunit.
Balupton,

5

i voti è una libreria di test di unità solide per node.js ma la sintassi è noioso.

Ho scritto una sottile astrazione chiamata voti fluenti che rende l'API concatenabile.

E ho scritto un'altra astrazione, [voti-è] che si basa su voti fluenti ed espone una sintassi in stile BDD.

Un esempio sarebbe

var is = require("vows-is");

is.suite("testing is fun").batch()

    .context("is testing fun?")
        .topic.is("yes")
        .vow.it.should.equal("yes")

.suite().run({
    reporter: is.reporter
});

Più esempi


6
tra l'altro, la sintassi dei voti è orribile dell'IMO
Donn Felker,

Ho giocato con i voti con l'involucro gradevole. Sembrava una buona idea per testare un json api ma rapidamente è venuto fuori corto. Tendo anche a scoprire che le api fortemente orientate a concatenare chiamate come questa sono difficili da usare e difficili da eseguire il debug. Sembrano buoni negli esempi, ma non funzionano bene nell'uso del mondo reale.
Drekka,

@drekka i voti e i voti sono orribili. usa la moka
Raynos il

Provandolo ora, ma sembra che ci siano problemi simili.
Drekka,

allora devi usarlo male. prova a leggere gist.github.com/2896455 . @drekka
Raynos


1

Se si ha familiarità con QUnit , è possibile utilizzare node-qunit che è una sorta di wrapper di nodo attorno al framework esistente di QUnit.


0

Originariamente creata per node.js, deadunit è una libreria di test di unità javascript per node.js e il browser. Alcuni dei suoi attributi unici:

  • Curva di apprendimento facile
  • Può produrre risultati di test sulla riga di comando (colorata o in chiaro) o come HTML
  • Stampa le righe di codice effettive in cui si trovano le tue asserzioni, quindi l'output ha senso anche se non passi molto tempo a scrivere commenti di prova
  • Ha una semplice countaffermazione che semplifica la gestione delle eccezioni attese e delle asserzioni asincrone
  • stampa l'eccezione e tutti i dati allegati che hanno
  • ti farà sapere se il tuo codice è sospeso (qualcosa che non vuoi, ma di solito passa inosservato)
  • Dispone di un'API guidata dagli eventi che consente di eseguire lo streaming dei risultati dei test su una rete o nel modo desiderato.
  • Supporta test con fibre di nodo

0

Ho appena caricato un progetto che sto usando per testare unit nodejs con karma e Jasmine: narma . I moduli del nodo vengono caricati in un browser nodewebkit in modo da poter eseguire i moduli del nodo e utilizzare librerie come jquery nello stesso heap.


0

test-studio è un pacchetto npm che fornisce un potente front-end basato sul web per i test delle unità. Supporta cose come l'esecuzione di singoli o gruppi di test e l'inserimento di nodi-ispettori in test individuali. Attualmente supporta la moka e saranno supportati più framework nella domanda futura.

Leggi di più qui .

Disclaimer: sono l'autore.


1
sembra che questo sia stato scritto da te, giusto? in tal caso, è necessario rivelare tale fatto nella risposta.
strugee,
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.