2013-08-07 206 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正確處理它。