Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Mocha only running one test file

My Mocha tests were working fine, but when I added a new module (and test), mocha stopped running all of my test files and now only runs the single new test.

My test script:

env NODE_PATH=$NODE_PATH:$PWD/src mocha --recursive --compilers js:babel-core/register src/**/*.test.js --require babel-polyfill

My project is structured like this:

/src
  /components
    /component-name
      index.js
      component.js
      component-name.test.js
      style.scss
  /util
    /module-name
      index.js
      module-name.test.js
  /some-other-module
    index.js
    some-other-module.test.js

I had several tests in /components and /util and everything worked fine, but when I place a module into /src (like /some-other-module) with a .test.js file in it, Mocha only runs that test file and none of the others.

like image 343
SimpleJ Avatar asked Feb 09 '16 22:02

SimpleJ


People also ask

How do I run a single test file with mocha?

Run a Single Test FileUsing the mocha cli, you can easily specify an exact or wildcarded pattern that you want to run. This is accomplished with the grep option when running the mocha command. The spec must have some describe or it that matches the grep pattern, as in: describe('api', _ => { // ... })

Does mocha run tests in parallel?

Mocha does not run individual tests in parallel. That means if you hand Mocha a single, lonely test file, it will spawn a single worker process, and that worker process will run the file. If you only have one test file, you'll be penalized for using parallel mode. Don't do that.


1 Answers

Put single quotes around the pattern you pass to Mocha to prevent it being interpreted by your shell: 'src/**/*.test.js'

What happens is that, without the quotes, your shell tries to expand that pattern and is successful. The result of expansion is src/some-other-module/some-other-module.test.js and this is what is passed to Mocha.

Before you created that file, the shell still tried to expand the pattern but was not successful and left the pattern as-is. So Mocha got src/**/*.test.js, which Mocha itself interpreted as a glob.

In case you wonder, in Bash, unless the globstar option is turned on, ** is equivalent to *.

like image 161
Louis Avatar answered Sep 16 '22 13:09

Louis