O Mocha tenta encontrar os arquivos de teste test
por padrão, como faço para especificar outro diretório, por exemplo server-test
?
unit-testing
node.js
mocha
Vento livre
fonte
fonte
.only
e.skip
gerenciar quais testes você Estão correndo. Importante durante o desenvolvimento de um recurso específico, quando você não deseja esperar que todo o conjunto de testes seja executado o tempo todo.Respostas:
Editar: esta opção está obsoleta: https://mochajs.org/#mochaopts
Se você deseja fazê-lo ainda executando apenas
mocha
na linha de comando, mas deseja executar os testes em uma pasta em./server-tests
vez de./test
, crie um arquivo./test/mocha.opts
com exatamente isso no arquivo:Se você deseja executar tudo nessa pasta e subdiretórios, coloque-o em
test/mocha.opts
mocha.opts
são os argumentos transmitidos por meio da linha de comando; portanto, tornar a primeira linha apenas o diretório em que você deseja alterar os testes também redirecionará./test/
fonte
mocha.opts
arquivo pode ser colocado onde você quiser e, em seguida, basta executarmocha
especificando o caminho para o arquivo de configuração, por exemplo:mocha --opts ./mocha.opts
Usa isto:
Ou se você tiver subdiretórios, use isto:
Observe o uso de aspas duplas. Se você os omitir, talvez não seja possível executar testes em subdiretórios.
fonte
mocha test/server-test
mocha ./**/*.test.js
(para que eu possa colocar o arquivo de teste no arquivo do módulo). O padrão parou de funcionar para mim quando adicionei um arquivo de teste em um nível diferente na hierarquia de arquivos que o resto dos testes, e só encontraria esse arquivo de bola ímpar e não as dezenas de outros que viviam no mesmo nível na hierarquia . O embrulho entre aspas o corrigia.--recursive
como explique abaixoAqui está uma maneira, se você tiver subpastas na sua pasta de teste, por exemplo
Então, no linux, você pode usar o comando find para listar todos os arquivos * .js recursivamente e passá-lo para o mocha:
fonte
--recursive
como explique abaixomocha
, não tem opção para definir a estrutura de diretório desejada na configuração?A boa maneira de fazer isso é adicionar um script npm "test" no package.json que chama mocha com os argumentos corretos. Dessa forma, o seu package.json também descreve sua estrutura de teste. Ele também evita todos esses problemas de plataforma cruzada nas outras respostas (aspas duplas vs simples, "localização" etc.)
Para que o mocha execute todos os arquivos js no diretório "test":
Em seguida, para executar apenas os testes de fumaça, chame:
Você pode padronizar a execução de todos os testes em todos os projetos dessa maneira; assim, quando um novo desenvolvedor iniciar seu projeto ou outro, eles saberão que "npm test" executará os testes. Existe uma boa precedência histórica para isso (Maven, por exemplo, a maioria das escolas antigas também "faz" projetos). Com certeza ajuda o CI quando todos os projetos têm o mesmo comando de teste.
Da mesma forma, você pode ter um subconjunto de testes mais rápidos de "fumaça" que deseja que o mocha execute:
Em seguida, para executar apenas os testes de fumaça, chame:
Outro padrão comum é colocar seus testes no mesmo diretório da origem que eles testam, mas chame os arquivos de teste * .spec.js. Por exemplo: src / foo / foo.js é testado por src / foo / foo.spec.js.
Para executar todos os testes denominados * .spec.js por convenção:
Em seguida, para executar todos os testes, chame:
Veja o padrão aqui? Boa. :) A consistência derrota o mura .
fonte
Não use a opção -g ou --grep, esse padrão opera com o nome do teste dentro dele (), não no sistema de arquivos. A documentação atual é enganosa e / ou totalmente errada sobre isso. Para limitar o comando inteiro a uma parte do sistema de arquivos, você pode passar um padrão como o último argumento (não é um sinalizador).
Por exemplo, este comando definirá seu repórter como spec, mas testará apenas os arquivos js imediatamente dentro do diretório server-test:
Este comando fará o mesmo que acima, além de executar apenas os casos de teste em que a cadeia de caracteres it () / definição de um teste começa com "Fnord:":
fonte
Se no node.js , algumas novas configurações a partir do Mocha v6 :
Opção 1: Criar
.mocharc.json
no diretório raiz do projeto:Opção 2: adicione
mocha
propriedade nos projetospackage.json
:Mais opções estão aqui .
fonte
Execute todos os arquivos
test_directory
incluindo os subdiretórios correspondentestest.js
ou use o
--recursive
interruptorfonte
Eu tive esse problema agora e o resolvi removendo a
--recursive
opção (que eu havia definido) e usando a mesma estrutura sugerida acima:mochify "test/unit/**/*.js"
Isso executou todos os testes em todos os diretórios sob
/test/unit/
mim e ignorou os outros diretórios dentro de mim./test/
fonte
Agora, em um dia (ano 2020), você pode lidar com isso usando o arquivo de configuração mocha :
Etapa 1: Crie o arquivo .mocharc.js no local raiz do seu aplicativo
Etapa 2: adicione o código abaixo no arquivo de configuração do mocha:
Para obter mais opções no arquivo de configuração, consulte este link: https://github.com/mochajs/mocha/blob/master/example/config/.mocharc.js
fonte
Estou no Windows 7 usando node.js v0.10.0 e mocha v1.8.2 e npm v1.2.14. Eu estava apenas tentando fazer com que o mocha usasse a unidade / teste de caminho para encontrar meus testes. Depois de gastar muito tempo e tentar várias coisas, consegui
O uso da opção "test / unit / *. Js" não funciona no Windows. Por boas razões, o shell do Windows não expande curingas como o unixen.
No entanto, o uso de "teste / unidade" funciona, sem o padrão de arquivo. por exemplo. "mocha test / unit" executa todos os arquivos encontrados na pasta test / unit.
Isso ainda executa apenas os arquivos de uma pasta como testes, mas você pode passar vários nomes de diretório como parâmetros.
Também para executar um único arquivo de teste, você pode especificar o caminho completo e o nome do arquivo. por exemplo. "teste mocha / unit / mytest1.js"
Na verdade, eu configurei no package.json para o npm "scripts": {"test": "mocha test / unit"},
Para que 'npm test' execute meus testes de unidade.
fonte
--recursive
opção da seguinte maneira:mocha --recursive "some_dir"
node_modules\.bin\mocha "test\unit\*.js"
funciona no Windows. Tambémnode_modules\.bin\mocha "**\*.js"
funciona (meu caso real). Mas estou procurando uma maneira de excluir o diretório node_modules . (Eu uso gulpfile.js também, mas em algum momento eu preciso para teste de lançamento diretamente com mocha)Se você estiver usando
nodejs
, na suapackage.json
sobscripts
global (-g)
instalações:"test": "mocha server-test"
ou"test": "mocha server-test/**/*.js"
para subdocumentosproject
instalações:"test": "node_modules/mocha/bin/mocha server-test"
ou"test": "node_modules/mocha/bin/mocha server-test/**/*.js"
para subdocumentosEm seguida, basta executar seus testes normalmente como
npm test
fonte
npm run mocha "./test/*.spec.js!(~)"
ignora o argumento da glob, masnode_modules/.bin/mocha "./test/*.spec.js!(~)"
não.npm run mocha -- yourArgs
Como mencionado por @superjos nos comentários, use
mocha --recursive "some_dir"
fonte
Este não parece ser um suporte "fácil" para alterar o diretório de teste.
No entanto, talvez você deva dar uma olhada nesse problema , em relação à sua pergunta.
fonte
Como @ jeff-dickey sugeriu, na raiz do seu projeto, crie uma pasta chamada
test
. Nessa pasta, crie um arquivo chamadomocha.opts
. Agora, quando tento melhorar a resposta de Jeff, o que funcionou para mim foi, em vez de especificar o nome de apenas uma pasta de teste, especifiquei um padrão para encontrar todos os testes a serem executados no meu projeto, adicionando esta linha:*/tests/*.js --recursive
nomocha.opts
Se você deseja especificar as pastas exatas para procurar testes, fiz algo assim:
Espero que isso ajude quem precisa mais do que as outras respostas fornecem
fonte