在我package.json
我有以下内容;
"scripts": {
"test": "NODE_ENV=test mocha **/*.spec.js"
}
当我运行npm test
时,它只在我的子目录中完成一个测试。
# npm test
sample test
✓ single task
1 passing
但是当我在我的控制台中手动运行脚本时,它会完成所有测试。
# NODE_ENV=test mocha **/*.spec.js
sample test
✓ single task
sample test x2
✓ single task x1
✓ single task x2
✓ single task x3
✓ single task x4
✓ single task x5
sample test x3
✓ single task x1
✓ single task x2
✓ single task x3
✓ single task x4
✓ single task x5
✓ single task x6
sample test x4
✓ single task x1
✓ single task x2
✓ single task x3
✓ single task x4
16 passing (15s)
为什么运行相同的命令会有区别?以及如何让npm test
运行我的所有测试?
答案 0 :(得分:2)
这是一个已知问题,由mocha用于globbing的语法引起,该语法在许多机器上与shell本身的globbing系统冲突。如果你不小心,shell会在mocha甚至有机会看到之前评估并扩展它。
npm test
fails to glob all files 解决方案是通过将模式包装在引号中,告诉shell将模式视为字符串文字。单引号最适合* nix系统。如果您需要Windows支持,则必须使用escaped double quotes,这在* nix上有一些陷阱。
NODE_ENV=test mocha '**/*.spec.js'
您仍需要确保模式正确匹配文件。但使用此技术将解决不一致的行为。行为的差异是由npm
包装test
脚本并运行它的方式引起的。
如何提供帮助: