2012-10-31 38 views
1

我嘗試使用與webstorm測試運行摩卡在Win 7摩卡+ webstorm - 錯誤消息打破

我有這些配置PARAMS:

  • 路徑節點:

    C:\Program Files (x86)\nodejs\node.exe 
    

    工作目錄:

    D:\creation\software developer\projects\dev\document root\ 
    

    路徑節點的應用程序js文件:

    C:\Users\inf3rno\node_modules\mocha\bin\_mocha 
    

    應用參數:

    test 
    

我得到了webstorm控制檯

✖ 1 of 1 test failed: 

,但沒有出現以下錯誤信息有關該測試失敗。 :S

如何解決?

(Git中的bash我有一個詳細的錯誤信息,所以摩卡已安裝好)

試着用不同的記者,但他們沒有工作似乎。問題出在我認爲的Error對象上。其他一切都很好地展現。

寫了一個自定義記者,發現棧​​是否顯示在webstorm控制檯上是完全隨機的。最好的選擇是使用console.log或process.stdout.write將其與process.stderr.write打印在一起,否則不會顯示任何內容。我不知道那是爲什麼。也許這是某種類型的超時,但我把超時設置爲9999999.:S:S:S嗯,也許webstorm亞軍有一個超時,這取決於,而不是摩卡超時設置...

測試本報記者:

exports = module.exports = WebStorm; 

/** 
* Initialize a new `WebStorm` test reporter. 
* 
* @param {Runner} runner 
* @api public 
*/ 

//decribe -> suite 
//it -> test 

function WebStorm(runner) { 
    var buffer = []; 
    var suites = []; 
    var fails = []; 

    runner.on("suite", function(suite){ 
    suites.push(suite.title || "''"); 
    }); 

    runner.on("suite end", function(suite){ 
    if (fails.length > 0) 
     buffer.push("describe "+suites.join(".")+"\n"+fails.join("\n")); 
    fails = []; 
    suites.pop(); 
    }); 

    runner.on("fail", function(test, err){ 
     fails.push(" it fail "+test.fullTitle() + err.message); 
    }); 

    runner.on("end", function(){ 
     process.stderr.write(buffer.length+"\n"); 
     //process.stderr.write(buffer.join("\n")); 
    }); 
} 

我發現它並不真正的問題輸出文本有多長,你剛纔多久顯示它之前等待。所以我仍然認爲這是一個超時問題,而不是一個stdout錯誤。 webstorm控制檯返回:「處理完成退出代碼59」,表示「發生意外的網絡錯誤。」

更改爲茉莉節點,它的工作。

編輯:

我改jasmine2,它有Windows上的同樣的問題。最簡單的解決方法是以1ms爲例推遲process.exit。所以它不能在stdout.write結束之前退出。 (之後手動刷新標準輸出和調用出口也可能是一個可行的解決方案。)

回答

3
+0

不錯,謝謝!任何想法爲什麼它在git bash中運行良好,爲什麼不在webstorm控制檯中? – inf3rno

+0

哈哈我知道它,git bash是一個模擬的Linux,這是一個Windows問題。 :P – inf3rno

+0

我在webstorm控制檯中得到了這個:「處理完成退出代碼59」,這意味着:「59發生意外的網絡錯誤。」 – inf3rno

5

雖然更大的權力是debating on the hows and the whys to fix this,較小的凡人可以求助於該變通方法:

  • 創建一個名爲testRunner.js(或其他)
  • 下面的代碼行添加到它
  • 修改的測試文件列表中每個項目在webstorm
  • ,運行testRunner.js運行測試

testRunner.js

var testFiles=["test/_helper.js","test/tests.js","test/tests.coffee"]; 

var Mocha = require('mocha'); 

var mocha = new Mocha; 

mocha.reporter('spec').ui('bdd'); 

for (var i =0;i<testFiles.length;i++){ 
mocha.addFile(testFiles[i]); 
} 

var runner = mocha.run(function(){ 
       console.log('finished'); 

}); 

禮貌:http://wuntusk.blogspot.com/2012/06/using-webstorm-or-phpstorm-and-mocha.html

+2

一個更靈活的包裝:https://gist.github.com/refack/6864261 –

+0

@RefaelAckermann:好的!我想可以調整一次運行一個文件,但我不想等待其他測試在調試時完成。 – Mrchief

1

即使實施Mrchief的回答後,我仍然得到炒的輸出報告。我最終在終端窗口中運行測試。作爲參考;

確保mocha安裝在全球範圍內。

npm install -g mocha 

打開端子窗口(ALT-減號),並切換到您的測試腳本是

運行摩卡

摩卡-R規格目錄* .js文件