如何使用npm使用通配符在多个目录中运行测试



当我使用命令时

"test": "mocha *.spec.js *.test.js test/*.spec.js test/*.test.js",

它按照我的意愿运行,即根目录(2(中的所有测试和规范文件加上test/(2(的任何文件。所以4个人跑了。

4 passing (4ms)                                                                                           

我想简化它,但我所有的尝试都失败了。示例:

"test": "mocha",
"test": "mocha *.spec.js *.test.js",
"test": "mocha **/*.spec.js **/*.test.js",
"test": "mocha */*.spec.js */*.test.js",

但它们只运行4个测试中的2个。2个在根目录中,2个在测试/中

我也试过使用

--recursive

但这无济于事。

如何使用通配符以较短的语法运行所有4?

根据文档:

您应该始终在npm脚本中引用您的globs。如果您使用双引号,是UNIX上的shell将展开glob。在…上另一方面,如果使用单引号,则node-glob模块将处理其扩展。

具有以下结构(每个测试文件中有一个it,安装了mocha@7.1.0(:

temp/
node_modules/
test/
four.test.js
three.spec.js
one.test.js
package-lock.json
package.json
two.spec.js

使用以下脚本之一:

"test": "mocha '**/*.spec.js' '**/*.test.js'"

或:

"test": "mocha "**/*.spec.js" "**/*.test.js""

运行了所有四项测试:

> temp@1.0.0 test path/to/temp
> mocha '**/*.spec.js' '**/*.test.js'

✓ three
✓ two
✓ one
✓ four
4 passing (10ms)

相比之下,仅的未引用版本test/中运行测试。


您可以使用模式**/*.{spec,test}.js进一步简化;同样,这需要在脚本中使用单引号或双引号。

最新更新