2012-05-19 107 views
75

我正在使用JavaScript測試運行「Mocha」。使用Mocha測試javascript - 我如何使用console.log來調試測試?

我有一個測試失敗,所以我會用console.log進行調試。

但是當測試運行時,沒有輸出(僅來自Mocha的測試結果)。 摩卡似乎已經捕獲並壓制了我的console.log輸出!

我怎樣才能讓摩卡顯示我的輸出? (在測試失敗)?

編輯:

表示深深的歉意! - console.log在測試過程中可以正常工作!我一定會期待它壓制輸出,而我沒有正確地檢查自己的代碼。感謝您的迴應。 所以...說...也許它實際上會很好地抑制通過測試的輸出?嗯...

在相關的說明:我想使用console.log,因爲我有很多麻煩試圖讓Eclipse調試器連接到node.js.

我是唯一一個發現這種棘手的人嗎?你們如何調試node.js?用調試器,還是用console.log語句?

+0

好價錢! :)現在我仍然通過moca測試非常「調試」節點。我在不久的將來會看到一段時間,當我想要在這裏評估一些選項時:http://stackoverflow.com/questions/1911015/how-to-debug-node-js-applications –

+0

我建議你不要將Eclipse用於Node.js,它確實不是使用IMO的最佳環境。 JetBrains的WebStorm是一個很棒的Node.js IDE,雖然它需要花錢。如果你正在尋找免費的,我真的很喜歡新的Visual Studio代碼,它有很好的內置支持節點調試和其他的事情,使節點的發展很好。 – dsw88

+0

@ dsw88 - 我對WebStorm的經驗是,一旦我們的文件結構開始變得越來越大,它就會減慢速度。使用Java應用程序提醒了我過去的那些日子。 –

回答

40

您正在使用哪些Mocha選項?

也許這跟使用記者(-R)或ui(-ui)有關?

console.log(msg); 

在我的測試運行過程中工作正常,雖然有時混合在一個有點愚蠢。可能是由於測試運行的異步性質。

以下是選項(mocha.opts)我使用:

--require should 
-R spec 
--ui bdd 

Hmm..just測試沒有任何mocha.opts和console.log仍然有效。

+3

摩卡-R規格很棒!謝謝 –

+2

其中log()實際上很多TO? – PositiveGuy

29

如果您正在測試異步代碼,則需要確保將done()置於該異步代碼的回調中。測試http請求到REST API時,我遇到了這個問題。

12

您可能也會在您的期望失敗並且未被捕獲後放入您的console.log,因此您的日誌行不會被執行。

+0

是的,這是我的問題,謝謝你提出這個建議。我將控制檯日誌移到失敗的.expect之前,現在顯示。 – redfox05