摩卡,如何忽略node_modules文件夹

Sim*_*mon 5 mocha.js node.js npm

我正在尝试创建一个测试环境,所有源文件均与其测试代码并排。这是因为易于跟踪没有测试代码的文件。下面是运行构建后我的目录的示例

built/api/a.js
built/api/a-test.js  
built/api/b.js
built/api/b-test.js
built/index.js
built/index-test.js
built/node_modules/...
built/package.json  
src/api/a.js
src/api/a-test.js
src/api/b.js
src/api/b-test.js
src/index.js
src/index-test.js
src/package.json
package.json
Run Code Online (Sandbox Code Playgroud)

我将通过运行“ npm test”来运行测试,以下是我的package.json内容:

{ "name": "sample", 
  "scripts": {
    "build": "babel ./src -d ./built && cd built && npm install",
    "test": "mocha built/**/*-test.js"
  },
  "devDependencies": {
    "babel-cli": "^6.18.0",
    "babel-core": "^6.18.0",
    "mocha": "^3.1.2"
  }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是如何跳过node_modules文件夹中的文件,它们的名称恰巧以-test.js结尾

Nic*_*rey 8

参加聚会有点晚(超过13个月!?),但是...

Mocha不支持此功能。您需要使用您的glob-fu并获得一些幻想。在命令行上运行类似这样的命令应该可以解决问题:

mocha './built/{,!(node_modules)/**}/*-test.js'
Run Code Online (Sandbox Code Playgroud)

球形图案{,!(node_modules)/**}

不论深度如何,都应在当前目录或当前目录的任何子目录中获取条目,但根目录中的条目除外./build/node_modules

请注意,单引号基本上需要对OS X或Linux Boxen有。左为裸词(不带引号),或引用双引号,你会得到贝通配的内部,而不是glob()由所使用mocha,所以你不可能得到你所期望的结果...除非你有一个非典型的壳。

Windows外壳程序只支持双引号...它没有命令行通配符,所以在Windows上,你可能会想离开这个不需要加引号(但不这样做,错了,引用我这句话)。

一种更好的,与平台无关的方法是将glob模式放入test/mocha.opts文件中,从而:

--require ./test/setup.js
--colors
--inline-diffs
./built/{,!(node_modules)/**}/*-test.js
Run Code Online (Sandbox Code Playgroud)

干杯!

  • 谢谢@FelixEnescu,这对我来说非常有用。我只做了一项修改,即“*-test.js”变成了“*.test.js”,但这取决于您喜欢的命名约定:) (2认同)