Uso Mocha per testare le mie cose JavaScript. Il mio file di test contiene 5 test. È possibile eseguire un test specifico (o una serie di test) anziché tutti i test nel file?
Uso Mocha per testare le mie cose JavaScript. Il mio file di test contiene 5 test. È possibile eseguire un test specifico (o una serie di test) anziché tutti i test nel file?
Risposte:
Prova a usare l' --grep
opzione moka :
-g, --grep <pattern> only run tests matching <pattern>
Puoi usare qualsiasi regex JavaScript valido come <pattern>
. Ad esempio, se abbiamo test/mytest.js
:
it('logs a', function(done) {
console.log('a');
done();
});
it('logs b', function(done) {
console.log('b');
done();
});
Poi:
$ mocha -g 'logs a'
Per eseguire un singolo test. Si noti che questo si insinua tra i nomi di tutti describe(name, fn)
e le it(name, fn)
invocazioni.
Prendi in considerazione l'utilizzo di describe()
chiamate nidificate per lo spazio dei nomi per facilitare l'individuazione e la selezione di insiemi particolari.
mocha some/test.js
) non ha funzionato affatto. Grazie!
logs a bcd
che contiene la logs a
sottostringa? Regexp ^$
non funziona su 0.10.2.
A seconda del modello di utilizzo, ti potrebbe piacere solo utilizzare solo . Usiamo lo stile TDD; sembra così:
test.only('Date part of valid Partition Key', function (done) {
//...
}
Solo questo test verrà eseguito da tutti i file / suite.
it.only
.
it.only
non funziona insieme con given
di moka-testdata . Ed è facile dimenticare di rimuoverlo in seguito.
eslint-plugin-mocha
ha una regola no-exclusive-tests
che ti catturerà se ti dimentichi di rimuoverlo .only
.
Se stai usando npm test
(usando gli script package.json) usa un extra --
per passare il parametro attraverso mocha
per esempio npm test -- --grep "my second test"
EDIT : Sembra che --grep
possa essere un po 'esigente (probabilmente a seconda degli altri argomenti). Puoi:
Modifica il pacchetto.json:
"test:mocha": "mocha --grep \"<DealsList />\" .",
O in alternativa usa quello --bail
che sembra essere meno esigente
npm test -- --bail
--grep
può essere un po 'pignolo - prova a metterlo subito dopo la moka nella voce dello script npm. Altrimenti npm test -- --bail
è utile per il salvataggio dopo il primo test fallito
--grep
salvato la giornata! Molte grazie. PS. Sono su Windows, in esecuzionenpm test -- --grep @tag
In realtà, si può anche eseguire un singolo test mocha per nome file (non solo per "it () - string-grepping") se si rimuove il modello glob (ad esempio ./test/**/*.spec.js
) da mocha.opts, rispettivamente si crea una copia, senza:
node_modules/.bin/mocha --opts test/mocha.single.opts test/self-test.spec.js
Ecco il mio mocha.single.opts (è diverso solo mancando la suddetta linea glob)
--require ./test/common.js
--compilers js:babel-core/register
--reporter list
--recursive
Sfondo: mentre puoi sovrascrivere i vari switch dal file opts (a partire da --
) non puoi ignorare il glob . Questo link ha anche alcune spiegazioni.
Suggerimento: se node_modules/.bin/mocha
ti confonde, usa il pacchetto locale mocha. Puoi anche scrivere solo mocha
se lo hai installato a livello globale.
E se desideri il comfort di package.json
: Still: rimuovi il **/*
glob -ish dal tuo mocha.opts
, inseriscilo qui, per tutti i test, lasciali via per i singoli test:
"test": "mocha ./test/**/*.spec.js",
"test-watch": "mocha -R list -w ./test/**/*.spec.js",
"test-single": "mocha $1",
"test-single-watch": "mocha -R list -w $1",
utilizzo:
> npm run test
rispettivamente
> npm run test-single -- test/ES6.self-test.spec.js
(attenzione al --
!)
Warning: Could not find any test files matching pattern: $1
Salve soluzioni sopra non ha funzionato per me. L'altro modo di eseguire un singolo test è
mocha test/cartcheckout/checkout.js -g 'Test Name Goes here'
Ciò consente di eseguire un caso di test da un singolo file e con un nome specifico.
-g
e non sarà necessario specificare un nome file. Se non riesci a scrivere un'espressione abbastanza selettiva, significa che non stai nominando correttamente i test.
npm test <filepath>
per esempio :
npm test test/api/controllers/test.js
qui 'test / api / controllers / test.js' è il percorso del file.
Puoi provare "it.only"
it.only('Test one ', () => {
expect(x).to.equal(y);
});
it('Test two ', () => {
expect(x).to.equal(y);
});
in questo verrà eseguito solo il primo
--forbid-only
il server CI / build. .only
ha la tendenza a intrufolarsi nel ramo principale e rendere muti gli altri test in quanto non eseguiranno più. Sono venuto a pensare al flusso di lavoro di modifica del codice per eseguire diversi test e anti-funzionalità. Il test runner dovrebbe determinare quali test devono essere eseguiti (ovvero test con tag) e non lo sviluppatore.
it.only
repo
Guardando in https://mochajs.org/#usage vediamo che semplicemente usa
mocha test / myfile
funzionerà. Puoi omettere ".js" alla fine.
--grep
filtrasse solo dai@
tag.