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' --grepopzione 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 bcdche contiene la logs asottostringa? 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.onlynon funziona insieme con givendi moka-testdata . Ed è facile dimenticare di rimuoverlo in seguito.
eslint-plugin-mochaha una regola no-exclusive-testsche 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 --greppossa 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 --bailche 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
--grepsalvato 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/mochati confonde, usa il pacchetto locale mocha. Puoi anche scrivere solo mochase 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.
-ge 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-onlyil server CI / build. .onlyha 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.onlyrepo
Guardando in https://mochajs.org/#usage vediamo che semplicemente usa
mocha test / myfile
funzionerà. Puoi omettere ".js" alla fine.
--grepfiltrasse solo dai@tag.