Eu uso o Mocha para testar minhas coisas de JavaScript. Meu arquivo de teste contém 5 testes. É possível executar um teste específico (ou conjunto de testes) em vez de todos os testes no arquivo?
Eu uso o Mocha para testar minhas coisas de JavaScript. Meu arquivo de teste contém 5 testes. É possível executar um teste específico (ou conjunto de testes) em vez de todos os testes no arquivo?
Respostas:
Tente usar a --grepopção do mocha :
-g, --grep <pattern> only run tests matching <pattern>
Você pode usar qualquer regex JavaScript válido como <pattern>. Por exemplo, se tivermos test/mytest.js:
it('logs a', function(done) {
console.log('a');
done();
});
it('logs b', function(done) {
console.log('b');
done();
});
Então:
$ mocha -g 'logs a'
Para executar um único teste. Observe que isso aparece entre os nomes de todos describe(name, fn)e it(name, fn)invocações.
Considere o uso de describe()chamadas aninhadas para namespacing para facilitar a localização e a seleção de conjuntos específicos.
mocha some/test.js) não funcionou. obrigado!
logs a bcdque contém a logs asubstring? Regexp ^$não está funcionando no 0.10.2.
Dependendo do seu padrão de uso, você pode gostar de usar apenas . Nós usamos o estilo TDD; Se parece com isso:
test.only('Date part of valid Partition Key', function (done) {
//...
}
Somente este teste será executado em todos os arquivos / suítes.
it.only.
it.onlynão vai trabalhar em conjunto com givende mocha-testdata . E é fácil esquecer de removê-lo mais tarde.
eslint-plugin-mochatem uma regra no-exclusive-testsque o pegará se você esquecer de removê-lo .only.
Se você estiver usando npm test(usando scripts package.json), use um extra --para passar o parâmetro para o mocha
por exemplo npm test -- --grep "my second test"
EDIT : Parece que --greppode ser um pouco exigente (provavelmente dependendo dos outros argumentos). Você pode:
Modifique o package.json:
"test:mocha": "mocha --grep \"<DealsList />\" .",
Ou então use o --bailque parece ser menos exigente
npm test -- --bail
--grep pode ser um pouco exigente - tente colocá-lo logo após o mocha na entrada de script npm. Outra coisa npm test -- --bailé útil para salvamento após o primeiro teste que falha
--grepsalvar meu dia! Muito obrigado. PS. Eu estou no Windows, rodandonpm test -- --grep @tag
Na verdade, também é possível executar um único teste de mocha por nome de arquivo (não apenas por „it () - string-grepping“) se você remover o padrão glob (por exemplo ./test/**/*.spec.js) do seu mocha.opts, criar uma cópia, respectivamente:
node_modules/.bin/mocha --opts test/mocha.single.opts test/self-test.spec.js
Aqui está o meu mocha.single.opts (só é diferente em perder a linha glob acima mencionada)
--require ./test/common.js
--compilers js:babel-core/register
--reporter list
--recursive
Antecedentes: Embora você possa substituir as várias opções do arquivo opts (começando com --), você não pode substituir a glob . Esse link também tem algumas explicações.
Dica: se node_modules/.bin/mochaconfunde você, use o pacote local mocha. Você também pode escrever apenas mochase estiver instalado globalmente.
E se você deseja o conforto de package.json: Ainda: remova o **/*globo -ish do seu mocha.opts, insira-o aqui, para todos os testes, deixe-os fora para o único teste:
"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",
uso:
> npm run test
respectivamente
> npm run test-single -- test/ES6.self-test.spec.js
(cuidado com o --!)
Warning: Could not find any test files matching pattern: $1
Oi soluções acima não funcionou para mim. A outra maneira de executar um único teste é
mocha test/cartcheckout/checkout.js -g 'Test Name Goes here'
Isso ajuda a executar um caso de teste a partir de um único arquivo e com nome específico.
-ge você não precisará especificar um nome de arquivo. Se você não pode escrever uma expressão que seja seletiva o suficiente, isso significa que você não está nomeando seus testes corretamente.
npm test <filepath>
por exemplo :
npm test test/api/controllers/test.js
aqui 'test / api / controllers / test.js' é o caminho do arquivo.
Você pode tentar "it.only"
it.only('Test one ', () => {
expect(x).to.equal(y);
});
it('Test two ', () => {
expect(x).to.equal(y);
});
neste o primeiro só irá executar
--forbid-onlyno servidor de CI / build. .onlytem uma tendência a se infiltrar na ramificação principal e tornar os outros testes mudos, pois eles simplesmente não serão mais executados. Cheguei a pensar no fluxo de trabalho de alteração de código para executar testes diferentes de um anti-recurso. O executor de teste deve determinar quais testes devem ser executados (também conhecidos como testes marcados) e não o desenvolvedor.
it.onlya repo #
Olhando para https://mochajs.org/#usage , vemos que basta usar
teste de mocha / myfile
vai funcionar. Você pode omitir os '.js' no final.
--grepapenas filtrava as@tags.