2013-08-07 153 views
2

我有一个节点JS写在摩卡控制下的CoffeeScript运行快递应用多个测试。 不幸的是摩卡运行了所有的考试两次,becouse在同一目录下我的Jave .coffee和.js文件。 .js文件由我的编辑器与.map文件一起自动生成。如果我需要调试某些东西,这非常方便。摩卡运行测试两次

如何过滤,只有.coffee或.js文件从目录中执行而不是两个都?

回答

3

在你的package.json,创建条目类似如下:

"scripts": { 
    "test": "npm run test-coffee", 
    "test-js": "mocha -R spec test/*.js", 
    "test-coffee": "mocha -R spec test/*.coffee" 
    } 

现在可以运行npm testnpm run test-js,或npm run test-coffee。如果你在子目录的测试,你将要使用find命令时,仅运行测验你感兴趣

+0

谢谢您的回答。问题是当我使用例如mocha -R spec test/*。coffee时,它只能看到直接位于test /目录下的测试。没有处理深埋的文件。任何想法如何克服? – Luman75

+1

是的,就用'find -name测试 “* .js文件” 型的F -exec摩卡-R规格{} +'和'找到测试-name “* .coffee” 型的F -exec摩卡-R规格{} +' – dankohn

+0

是的,这是事实,它会起作用,但摩卡在这种情况下会单独进行每项测试,而关于成功和失败的最终报告并未整合。 – Luman75

0

摩卡默认运行文件与模式:test/*.{js,coffee}其中既包括咖啡和js文件。在你的情况下,它会找到每个测试的咖啡和js文件,因此你的测试运行两次。

您可能需要显式地设置文件模式,是这样的:

mocha -R spec "test/*.js" 

如果你在子目录的测试,你可以在模式中使用globstar(**)所示:

mocha -R spec "test/**/*.js" 

注意使用双引号。如果省略双引号,它们将被shell解释,并且可能无法匹配子目录中的文件。使用双引号将模式传递给摩卡,并且mocha正确处理它。