當開始開發新前端項目的時候,我常常會問本身兩個問題:「我應該用那一個 JavaScript 單元測試框架呢?」 和 「我應該花時間去添加測試代碼嗎?」javascript
個人同事常常寫一些有關單元測試如何讓腦子平靜下來且減小軟件錯誤的文章。因此我也總會花時間來作測試。可是在你的項目中應該選那個框架來作測試呢?在匆忙作出決定以前,我搜集了 5 個最受歡迎的 JavaScript 單元測試框架,讓你決定那一個纔是最合適你的。html
注意:若是你已經有更喜歡的測試框架而且它沒有出如今下面列表中,在評論中讓我知道我會添加到文章中。java
最受歡迎的 Javascript 單元測試框架之一,Jasmine提供全部你所須要的功能而且開箱即用。android
我對 Jasmine 的見解ios
我不是佔有全局變量環境的粉絲,因此 Jasmine 會在個人小本子上面丟些分。在另外一方面,它有不少很好的即開即用功能。它看上去會顯得稍微 「老些」 比起其它在這列表的框架,可是這並非一件壞事,其它框架可能遇到的痛點,意味着它們更應更容易被解決。git
一個簡約的測試庫,AVA 它的優點是 JavaScript 的異步特性和併發運行測試, 這反過來提升了性能。angularjs
我對 AVA 的見解es6
Ava 「最有見地的」 是極簡方法, 還有他不是佔有全局環境的,這讓他在個人小本子上得到很高的分數。簡單的 API 讓測試更清晰。在你選擇 JavaScript 單元測試框架的時候,AVA 測試庫你是絕對應該嘗試的。github
這是在這份框架列表上最小的一個框架,Tape 是最直接開門見山的,提供最基礎的功能。
我對 Tape 的見解
Tape 包含更底層,比 AVA 功能更少的 API,並以此爲傲。Tape 讓全部事情變得簡單,只給你所須要的東西。這就是爲何 Tape 在個人小本子上有着高分數而且是最好的 JavaScript 單元測試框架之一,它讓你更專一於產品而不是工具的選擇。
做爲能夠說是使用最多的庫,Mocha 是一個靈活的庫,提供給開發者的只有一個基礎測試結構。而後其它功能性的功能如 assertions, spies,mocks,和像它們同樣的其它功能須要引用添加其它庫/插件來完成。
include
或者請求它在每一個文件中。缺點是不管如何那些插件仍是要你使用 require
導入到裏面,這會致使不一致,若是你像我同樣是個 OCD (譯者注:強迫症患者) 它最終會把你弄瘋的!我對 Mocha 的見解
可擴展性和數種不一樣配置 Mocha 的方式另我印象深入。必須去學習 Mocha,而後也必須去學習你選擇的 assertion 庫這的確嚇到了我很多。靈活性在於它的 assertions,spies 和 mocks 帶給它的高收益。
被 Facebook 和各類 React 應用推薦和使用,Jest 獲得了很好的支持。Jest 也被發現是一個很是快速的測試庫在平行測試報告中。
我對 Jest 的見解
在全局變量是一個缺點,Jest 是一個不斷髮展功能強大的庫。它有不少易於理解的文檔幫助學習,而且支持各類不一樣環境,當構建項目的時候這些環境都顯示很棒。
在我研究了一些不一樣的框架以後,我得出一個結論,框架並不是都是非黑即白的。
大部分框架最終都會(Mocha 除外)在一天結束的時候提供給你你所須要的東西,這是一個測試環境同確保給出的 X -> Y 總回被返回的機制,有幾個會簡單的會給你更多 「華而不實的東西。」
你在選擇他們的時候你本身應該充滿自信,而個人選擇取決於你和你特定項目想要的和須要的。
我但願這將在你選擇你的 JavaScript 單元測試框架時有所幫助。若是你但願我還看一下其它 JavaScript 單元測試框,在評論中讓我知道!我會將它們稍後加到列表中。
掘金翻譯計劃 是一個翻譯優質互聯網技術文章的社區,文章來源爲 掘金 上的英文分享文章。內容覆蓋 Android、iOS、前端、後端、區塊鏈、產品、設計、人工智能等領域,想要查看更多優質譯文請持續關注 掘金翻譯計劃、官方微博、知乎專欄。