Mocha only running one test file

2020-02-06 21:03发布

问题:

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.

回答1:

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 *.