当我使用命令时
"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
进一步简化;同样,这需要在脚本中使用单引号或双引号。