我对在 Mocha 控制下运行的 coffeescript 编写的 node js express 应用程序进行了几个测试。不幸的是 mocha 运行了我所有的测试两次,因为在同一个目录中我有 .coffee 和 .js 文件。.js 文件由我的编辑器与 .map 文件一起自动生成。如果我需要调试某些东西,这非常方便。
如何过滤仅从目录执行的 .coffee 或 .js 而不是两者?
我对在 Mocha 控制下运行的 coffeescript 编写的 node js express 应用程序进行了几个测试。不幸的是 mocha 运行了我所有的测试两次,因为在同一个目录中我有 .coffee 和 .js 文件。.js 文件由我的编辑器与 .map 文件一起自动生成。如果我需要调试某些东西,这非常方便。
如何过滤仅从目录执行的 .coffee 或 .js 而不是两者?
在您的 package.json 中,创建如下条目:
"scripts": {
"test": "npm run test-coffee",
"test-js": "mocha -R spec test/*.js",
"test-coffee": "mocha -R spec test/*.coffee"
}
现在您可以运行npm test
、npm run test-js
或npm run test-coffee
. 如果您在子目录中有测试,您将希望使用 find 命令只运行您感兴趣的子测试。
Mocha 默认运行带有 pattern: 的文件,test/*.{js,coffee}
其中包括 coffee 和 js 文件。在您的情况下,它将找到每个测试的咖啡和 js 文件,因此您的测试运行两次。
您可能希望明确设置文件模式,例如:
mocha -R spec "test/*.js"
如果您在子目录中有测试,则可以在您的模式中使用 globstar (**),如下所示:
mocha -R spec "test/**/*.js"
注意使用双引号。如果省略双引号,它们将由 shell 解释,并且它可能无法匹配子目录中的文件。使用双引号将模式传递给 mocha,mocha 会正确处理它。