2012-05-25 11 views
142

Mocha tenta di trovare i file di prova sotto test per impostazione predefinita, come faccio a specificare un'altra dir, ad es. server-test?Come specificare la directory di test per mocha?

+0

Anche se non è al 100% una risposta alla tua domanda, controlla http://jaketrent.com/post/run-single-mocha-test/ - Sono venuto qui cercando come eseguire una specifica suite di test e questo mostra puoi usare '. solo 'e' .skip' per gestire i test che stai eseguendo. Importante durante lo sviluppo di una funzione specifica quando non si desidera attendere l'esecuzione dell'intera suite di test. –

risposta

65

Ecco un modo, se nella cartella di test sono presenti sottocartelle, ad es.

/test 
/test/server-test 
/test/other-test 

Poi in Linux È possibile usare il comando find per elencare tutti i file * .js in modo ricorsivo e passarlo al moka:

mocha $(find test -name '*.js') 
+18

o semplicemente usare '--recursive' come spiego sotto –

+3

Quindi in altre parole' mocha' non ha alcuna opzione per impostare la struttura di directory desiderata in config? – Green

+0

utente client $ mocha $ (trovare test -name '* .js') -bash: mocha: comando non trovato; Ottenere questo errore. – lft93ryt

1

Questo non sembra essere un supporto "facile" per la modifica della directory di test.
Tuttavia, forse dovresti dare un'occhiata a this issue, relativo alla tua domanda.

26

Non utilizzare il -g o l'opzione --grep, quel modello opera sul nome del test all'interno di esso(), non sul filesystem. La documentazione attuale è fuorviante e/o assolutamente errata in merito. Per limitare l'intero comando a una porzione del filesystem, puoi passare un pattern come ultimo argomento (non è un flag).

Ad esempio, questo comando sarà impostare il giornalista a spec, ma sarà solo file di test js immediatamente all'interno della directory del server-test:

mocha --reporter spec server-test/*.js 

Questo comando farà lo stesso come sopra, in più è solo la volontà eseguire i test in cui l'esso() stringa/definizione di un test inizia con "Fnord:":

mocha --reporter spec --grep "Fnord:" server-test/*.js 
2

sono su Windows 7 utilizzando v0.10.0 node.js e moka v1.8.2 e NPM v1. 2.14. Stavo solo cercando di ottenere moka per utilizzare il test del percorso/unità di trovare i miei test, Dopo aver trascorso a lungo e provare diverse cose sono atterrato,

Utilizzando il "test/unit/*. Js" opzione non fa lavorare su Windows. Per buoni motivi che la shell di Windows non espande i caratteri jolly come unixen.

Tuttavia utilizzando "test/unità" funziona, senza il modello di file. es. "mocha test/unit" esegue tutti i file trovati nella cartella test/unità.

Questo esegue ancora solo i file di una cartella come test ma è possibile passare più nomi di directory come parametri.

Anche per eseguire un singolo file di test è possibile specificare il percorso completo e il nome file. es. "Test moka/unità/mytest1.js"

Io in realtà l'installazione in package.json per NPM "script": { "test": "test moka/unit" },

In modo che ' test npm 'esegue i miei test di unità.

+9

A partire da oggi, si può usare l'opzione '--recursive' come la seguente:' mocha --recursive "some_dir" ' – superjos

+1

Uso' node_modules \ .bin \ mocha "test \ unit \ *. Js" 'funziona su Windows . Anche 'node_modules \ .bin \ mocha" ** \ *. Js "' funziona (il mio caso reale). Ma sto cercando un modo per escludere la directory _node_modules_. (Uso anche gulpfile.js ma a volte ho bisogno di avviare test direttamente con moka) –

210

Utilizzare questa:

mocha server-test 

O se avete sottodirectory utilizzare questo:

mocha "server-test/**/*.js" 

Nota l'uso di doppi apici. Se li ometti potresti non essere in grado di eseguire test nelle sottodirectory.

+1

Questo non funziona per me. Se desidero farlo in questo modo devo fare 'mocha test/server-test' – jonnie

+15

Il problema delle doppie virgolette mi ha fatto invecchiare! Grazie per aver salvato la mia sanità mentale. Gridare a tutti coloro che leggono questo per prestare maggiore attenzione a quelle doppie virgolette. – ctrlplusb

+8

Nel mio caso, stavo usando 'mocha ./**/*. Test.js' (così posso colocare il file di test con il file del modulo). Il pattern ha smesso di funzionare per me quando ho aggiunto un file di test a un livello diverso nella gerarchia dei file rispetto al resto dei test e trovavo solo uno strano file ball e non una dozzina di altri che vivevano allo stesso livello nella gerarchia . Avvolgere le virgolette lo ha risolto. – Stoutie

98

Se si vuole farlo ancora solo in esecuzione mocha sulla riga di comando, ma ha voluto eseguire i test in una cartella ./server-tests invece di ./test, creare un file a ./test/mocha.opts proprio con questo nel file:

server-tests 

Se si voleva correre tutto in quella cartella e sottocartelle, mettere questo in test/mocha.opts

server-tests 
--recursive 

mocha.opts sono gli argomenti passati in via il comando l ine, in modo da rendere la prima linea solo la directory che si desidera modificare le prove troppo reindirizza da ./test/

+6

Questa è l'opzione con il minimo attrito e dovrebbe essere la risposta accettata IMHO –

+0

Questo è un risparmio di tempo. –

+0

sto usando uno dei piatti della caldaia e alla riga seguente, potrebbe essere a causa di windows, puoi controllare una volta .node ./node_modules/mocha/bin/mocha $ (trova api -name '* -test.js') --compiler js: babel-core/register – kobe

9

Ho avuto questo problema solo ora e risolto rimuovendo l'opzione --recursive (che avevo impostato) e utilizzando la stessa struttura suggerito sopra:

mochify "test/unit/**/*.js"

Questo ha tutte le prove in tutte le directory sotto /test/unit/ per me, ignorando le altre directory all'interno /test/

2

Se si utilizza nodejs, nei vostri package.json sotto scripts

  1. Per global (-g) installazioni: "test": "mocha server-test" o "test": "mocha server-test/**/*.js" per documenti secondari
  2. Per project installazioni: "test": "node_modules/mocha/bin/mocha server-test" o "test": "node_modules/mocha/bin/mocha server-test/**/*.js" per documenti secondari

Poi basta eseguire i test normalmente come npm test

+0

Sto trovando che 'npm esegue mocha" ./test/*. spec.js! (~) "' ignora l'argomento glob, ma 'node_modules/.bin/mocha" ./test/*. spec.js! (~) "' no. – ironchicken

+0

@ironchicken per passare argomenti da "npm run" use - come in 'npm run mocha - yourArgs' – Hamsterrific

0

Come menzionato da @superjos in commen ts usano

mocha --recursive "some_dir"

10

Esegui tutti i file in test_directory tra cui sub directory che corrispondono test.js

find ./parent_test_directory -name '*test.js' | xargs mocha -R spec 

o utilizzare l'interruttore --recursive

mocha --recursive test_directory/ 
Problemi correlati