我有一个节点JS写在摩卡控制下的CoffeeScript运行快递应用多个测试。 不幸的是摩卡运行了所有的考试两次,becouse在同一目录下我的Jave .coffee和.js文件。 .js文件由我的编辑器与.map文件一起自动生成。如果我需要调试某些东西,这非常方便。摩卡运行测试两次
如何过滤,只有.coffee或.js文件从目录中执行而不是两个都?
我有一个节点JS写在摩卡控制下的CoffeeScript运行快递应用多个测试。 不幸的是摩卡运行了所有的考试两次,becouse在同一目录下我的Jave .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命令时,仅运行测验你感兴趣
摩卡默认运行文件与模式:test/*.{js,coffee}
其中既包括咖啡和js文件。在你的情况下,它会找到每个测试的咖啡和js文件,因此你的测试运行两次。
您可能需要显式地设置文件模式,是这样的:
mocha -R spec "test/*.js"
如果你在子目录的测试,你可以在模式中使用globstar(**)所示:
mocha -R spec "test/**/*.js"
注意使用双引号。如果省略双引号,它们将被shell解释,并且可能无法匹配子目录中的文件。使用双引号将模式传递给摩卡,并且mocha正确处理它。
谢谢您的回答。问题是当我使用例如mocha -R spec test/*。coffee时,它只能看到直接位于test /目录下的测试。没有处理深埋的文件。任何想法如何克服? – Luman75
是的,就用'find -name测试 “* .js文件” 型的F -exec摩卡-R规格{} +'和'找到测试-name “* .coffee” 型的F -exec摩卡-R规格{} +' – dankohn
是的,这是事实,它会起作用,但摩卡在这种情况下会单独进行每项测试,而关于成功和失败的最终报告并未整合。 – Luman75