2013-01-19 81 views
12

我有一個Jasmine規格的小項目,我正在使用Testacular作爲我的測試跑步者。 我不明白我如何調試,無論是應用程序代碼或規格代碼。當我嘗試在Chrome開發工具中設置一個斷點時,下次運行規格時不會觸發它,因爲它每次都用新的查詢字符串加載文件。如何調試使用Testacular(Karma)運行的Jasmine spec?

到目前爲止我發現的最好的東西是使用console.log(),但我寧願使用Chrome Dev Tools斷點。

(我使用Visual Studio 2012進行開發。)

感謝

回答

13

Testacular不是用於調試的最佳工具。它的強大之處在於它可以在多個瀏覽器中運行測試,並且極其快速地執行測試,並且每次更改文件時都可以執行此測試,因此它會告訴您是否已通過測試。但是如果你需要調試,這不是最好的工具。

確實可以在代碼中放置一個「調試器」語句以使其中斷,但如果這是一個常見的代碼行,您可能最終在測試中碰到相同的斷點幾十次或更多次多重測試。哪裏可能只是在一個給定的情況下,所以你必須跳過所有的斷點,除了你遇到問題的那個事件。如果你使用摩卡或茉莉花,你可以在整個測試套件中只運行一個測試。隨着茉莉花正在改變從它的一個測試()到iit(),用摩卡它是it.only()。但即便如此,仍然是這項工作的錯誤工具。

更好的解決方案是使用不同的測試「設置」,並運行單個測試。這很容易使用茉莉花或摩卡或任何您選擇的測試框架來完成。因爲testacular是一個自動化工具而不是測試框架,所以您將已經在其中一個框架中編寫了您的測試測試。因此,創建一個測試運行器文件並使用它,加載文件,如果您使用的是chrome,請進入開發工具,點擊MAC上的Command-O或Windows上的Control-O,然後選擇您想要的文件放入一個斷點,並設置斷點,然後用氣體烹飪。

在您的測試框架中使用傳統的「測試跑步者」並不會與使用測斜法相沖突。兩人將愉快地演奏。

這裏是鏈接到我的首選文章在各大3測試框架這樣做:

茉莉:http://net.tutsplus.com/tutorials/javascript-ajax/testing-your-javascript-with-jasmine/

QUnit:http://www.testdrivenjs.com/getting-started/qunit-setup/

摩卡:我沒有一個鏈接到一個良好這篇文章。到2013年2月中旬,我的PluralSight,測試客戶端JavaScript的com課程將會發布,您可以在那裏找到它,以及設置QUnit和Jasmine的詳細說明。他們有一個簡短的免費試用版,可以用來查看內容而無需付費。該URL在發佈時將鏈接到該課程。http://pluralsight.com/training/Authors/Details/joe-eames

+0

謝謝你的解釋。對於這個項目,我很好的使用'調試器;'但我一定會使用你的建議,如果未來的項目。 – Buzzy

+0

@Buzzy你非常歡迎! –

6

您可以通過自身使用語句debugger;,並作爲開發工具面板打開Chrome瀏覽器將只要打破這種說法和斷點已啓用。

+0

謝謝你的答案。你的解決方案有效,但我正在尋找一個更有條理的方式來做到這一點。如果沒有更好的解決方案,我會將其標記爲答案。 – Buzzy

4

我最喜歡的方法來調試測試與噶(是Testacular)是使用這個插件:

我啓動噶這樣的:

karma start karma.conf.js --browsers=Chrome --single-run=false --reporters=kjhtml 

這將以調試模式打開Karma,並帶有「調試」按鈕。當您點擊該按鈕時,它會在Chrome窗口中運行所有測試,並在結果發生時顯示結果。在這一點上,你可以使用開發工具,設置斷點,進入代碼等正常。

更好的是,你可以點擊一個失敗的測試,它會切換到只運行一個測試的模式。現在,您可以快速測試和調試該測試,而無需等待所有其他測試運行。

要在行動中看到這一點,這裏就是我添加了這個庫,以我們的項目的GitHub拉請求:

https://github.com/edx/edx-ui-toolkit/pull/12

+1

不確定事情是否最近改變或什麼,但它看起來像實際的記者ID不是'html'而是'kjhtml'(來自官方[自述文件](https://www.npmjs.com/package/karma-jasmine-html -記者)) – superjos

相關問題