2011-03-20 112 views
36

node.js module list上列出了30多個測試框架...特別支持測試異步代碼的node.js的單元測試框架?

哪個框架最受歡迎?他們有什麼優點和缺點?

我正在尋找一個框架,它支持具有大量異步回調(可能像大多數其他節點項目)的代碼的單元測試。另外,我正在尋找一些相對簡單而又複雜的東西。

到目前爲止,我已經研究過:

  • Nodeunit很簡單,通過讓你定義你希望有多少斷言被調用,當測試完成支持異步代碼。
  • Vowsjs看起來很有趣。使您可以很好地構建測試並具有許多高級功能。不確定這些功能是否真的有用,是否通過,或者它們是否適合您?

回答

35

expresso and vows是最受歡迎的選擇。雖然有很多很好的選擇。 更新:截至2011年11月,根據expresso存儲庫中的Readme.md,Mochaexpresso的後繼者。 should.js通常與Mocha一起使用以允許BDD風格的斷言。

無論您選擇什麼,我建議使用gently來存根核心或第三方模塊。

我使用/維護testosterone,一個小測試框架,在串口上運行測試,所以你可以輕輕地濫用。雖然沒有那麼多人使用它。

2

QUnit就像測試框架可以獲得並支持異步調用一樣簡單。它是JQuery的測試工具,因此您可以確定它受到高度支持並且運行良好。

您可以考慮與Sinon整合,這是一個模擬框架,它特別允許您僞造異步事件。 This tutorial和本教程的其他部分介紹瞭如何使用Sinon來測試異步代碼。它在瀏覽器上,但你應該能夠適應測試節點應用程序。

+3

正如你所知,Sinon也可用於nodeunit。實際上,nodeunit最初基於QUnit API,但是已經更新,使異步單元測試變得更加容易。作爲一個額外的好處,nodeunit也可以在瀏覽器中運行測試,如果你想與客戶端共享代碼:) – Caolan 2011-03-21 09:07:30

9

自2012年3月,我們一直在使用Nodeunit並沒有回頭。它易於使用,它可以讓您在模塊級別和類級別的設備(setup/teardown)之間進行選擇,它有一組合理的內置斷言,其命令行工具非常靈活。嘗試將它與nodemon相結合。

我們看了一個誓言雖然簡短,但是不想定義測試一個全新的奇怪的語法。所有你需要的是斷言,固定裝置和一個不錯的線束,而Nodeunit完全符合這個法案。

2

我還沒有使用它,但是從什麼舉足輕重的實驗室約Jasmine

+0

似乎這樣會適合! – FutuToad 2014-07-22 15:58:20

+0

我最近一直在使用摩卡進行單元測試。 – 2014-07-22 23:05:49

+0

你爲什麼用它來對付茉莉花? – FutuToad 2014-07-23 08:51:44

0

爲我自己的圖書館小插件,但更重要的是我只是想等線束開發商想在JS一個異步測試應該是什麼樣子:

我專門寫了OKJS因爲QUnit是這麼沒用異步的。 QUinit無法捕捉異常(!),並需要一個hacky start()來跟蹤深度。

許多測試框架沒有一個簡單的回調包裝來測試超時和捕獲異常。我不確定爲什麼 - 回調是異步開發的核心。 =/

setTimeout(function() { 
    ok(true, "Passed and ready to resume!"); 
    start(); 
    }, 1000); 

OKJS捕獲事件監聽器的異常,並跟蹤與INTERAL死男人的觸發優秀異步請求,可以在測試不及格的。

setTimeout(unit.callback("test callback is fired"), 500); 
    setTimeout(unit.callback("callback fired, with subtests", function() { 
     unit.assert("in callback, true === true", true,true); 
    }), 500); 

很想看到這種風格支持企業解決方案。 OKJS倡導的其他功能是可以串行執行的測試塊(配方樣式),但是在塊之間等待事件的解決。

0

test-studio是一個npm包,它爲單元測試提供了一個強大的基於web的前端。它目前僅支持摩卡,並提供諸如執行單個或多組測試以及將節點檢查器逐步進行單獨測試等操作。

瞭解更多關於它here