10個可靠的JavaScript測試工具
譯文【51CTO.com快譯】測試JavaScript代碼的需求直截了當。如何防止錯誤,并確保應用程序在瀏覽器中或Node.js上順利運行?幸好,開發(fā)人員在JavaScript測試方面有很多選擇。
JavaScript生態(tài)系統(tǒng)擁有用于單元測試、集成測試和功能測試的測試運行工具和框架,并涵蓋Node.js和瀏覽器以及Angular和React等框架。下面是JavaScript開發(fā)人員可以幫助測試應用程序的其中10個工具。
AVA
AVA是Node.js測試運行工具,提供簡潔的API、詳細的錯誤輸出并支持新的語言功能和進程隔離。AVA適合測試Node.js模塊和服務器應用程序,但可能不適合測試UI應用程序。AVA提供了將測試標記為“待辦事項”任務的功能。每個測試文件運行都是單獨的過程。其他優(yōu)點包括AVA的簡約和速度、簡單的測試語法以及同時運行多個測試的功能。AVA還支持異步函數和可觀察對象(observable)——可觀察對象是一種類型,可用于對DOM事件等基于推送的數據源進行建模。
AVA安裝:https://github.com/avajs/ava
Cucumber.js
用JavaScript實現的Cucumber測試工具:Cucumber.js運行于受維護的Node.js版本上和現代Web瀏覽器中。Cucumber項目提到的優(yōu)點包括:團隊溝通和運行用“普通”語言編寫的自動化測試的功能,這意味著團隊中任何人都可以閱讀它們。因此,可以改善溝通、協作和信任。Cucumber.js包含一個可執(zhí)行文件來運行測試套件,因此全局安裝時不起作用。 (Cucumber在支持文件中必不可少,全局安裝的模塊并非必不可少。)
Cucumber.js安裝:https://github.com/cucumber/cucumber-js
Enzyme
Enzyme是面向React JavaScript UI庫的測試實用工具。它旨在使React組件的輸出測試起來更容易。開發(fā)人員可以根據輸出操作、遍歷和模擬運行時環(huán)境。Enzyme API模仿jQuery API來實現DOM操作和遍歷。Enzyme對于測試運行工具或斷言庫并非固執(zhí)己見。如果開發(fā)人員想使用Enzyme以及自定義斷言和便利功能來測試React組件,可以考慮使用chai-enzyme和Mocha/Chai組合、jasmine-enzyme和Jasmine組合或jest-enzyme和Jest組合。Enzyme還可用于測試React Native組件。
Enzyme安裝:https://airbnb.io/enzyme/
Karma
Karma是JavaScript的測試運行工具,可以在多個瀏覽器中執(zhí)行代碼。支持各大瀏覽器,包括移動瀏覽器。該項目背后的開發(fā)人員稱,在Karma提供的環(huán)境中,開發(fā)人員不必設置大量配置,但可以編寫代碼并從測試中獲得即時反饋。Karma專為低級(單元)測試而設計。 Karma不是測試框架或斷言庫,它啟動HTTP服務器,并使用開發(fā)人員青睞的測試框架生成測試運行工具文件。它提供了面向Jasmine、Mocha和QUnit等框架的插件。
Karma安裝:https://www.npmjs.com/package/karma
Jasmine
Jasmine號稱是用于測試JavaScript的“行為驅動”框架。它不依賴其他JavaScript框架,也不需要DOM。支持者提到其語法有助于輕松編寫測試。Jasmine由Pivotal Labs維護,適用于測試網站、Node.js項目以及JavaScript可以運行的任何其他環(huán)境。Jasmine旨在為各種不同的使用場景和瀏覽器帶來易于測試的優(yōu)點,與JavaScript框架無關,這讓開發(fā)人員能夠測試來自React、Angular或其他任何JavaScript庫的代碼。Jasmine力求最小依賴性,同時保持小巧、易于維護。
Jasmine安裝:https://github.com/jasmine/jasmine
Jest
Jest號稱是一款全面的JavaScript測試解決方案,對于大多數JavaScript項目而言,開箱即用、無需配置。測試有獨特的全局狀態(tài),可以并行運行。之前失敗的測試先運行,運行根據測試文件的長度重新加以組織。與流行的JavaScript技術兼容,包括Angular、Babel、Node.js、React和Vue??梢赃\行測試以跟蹤龐大對象,快照與測試或嵌入式內聯放在一起。在測試文件中,Jest將方法和對象放入到全局環(huán)境中,無需導入它們。
Jest安裝:https://github.com/facebook/jest
Luna
Luna是一個自成一體的JavaScript單元測試框架,無需配置。產品文檔顯示,開發(fā)人員在幾分鐘內就可以讓第一批單元測試運行起來。生成代碼覆蓋報告,不用安裝其他任何模塊。測試必須編寫成ES6模塊,默認情況下在瀏覽器中運行測試。支持并發(fā),測試組并行運行。Luna的部分靈感來自面向谷歌Go語言的內置測試。Luna不支持轉譯(transpiling),因此無法與CoffeeScript或TypeScript兼容。它還缺少對舊版瀏覽器的支持。
Luna安裝:https://github.com/ccampbell/luna
Mocha
Mocha是一個功能豐富的測試框架,在Node.js和瀏覽器中運行,承諾使異步代碼測試起來“簡單又有趣”。測試串行運行,支持者稱這便于準確而靈活的報告,同時將未捕獲的異常與準確的測試用例對應起來。至于持續(xù)測試方面,開發(fā)人員可以使用Wallaby.js工具,借助任何斷言庫實現Mocha的實時代碼覆蓋。Mocha還與應用程序框架集成,比如通過Konacha,這讓開發(fā)人員可以使用Mocha在Ruby on Rails應用程序中測試JavaScript。還有許多編輯器插件,比如面向Visual Studio Code的Mocha側邊欄擴展。
Mocha安裝:https://mochajs.org/#installation
Protractor
Protractor是一款面向Angular及前身AngularJS的端到端測試框架。測試在瀏覽器中針對應用程序來運行,Proctractor就像用戶那樣與應用程序進行交互。支持針對Angular的定位器策略,以測試Angular元素,無需任何設置。網頁一完成等待的測試,自動等待功能使Protractor能夠執(zhí)行測試下一步。Protractor建立在WebdriverJS的基礎上,后者是用JavaScript實現的用于測試的Selenium瀏覽器自動化工具。
Protractor安裝:http://www.protractortest.org/#/
QUnit
QUnit是一個被JQuery、jQuery UI和jQuery Mobile等項目使用的JavaScript單元測試框架。實際上,QUnit最初由jQuery的發(fā)明人John Resig開發(fā)而成,作為jQuery的一部分。 QUnit號稱速度快、易于使用,擁有自成一體但簡潔、易于擴展的API,可用于測試任何普通的JavaScript代碼。測試或斷言失敗時,QUnit承諾盡快提供反饋,有足夠的細節(jié)來查明問題。QUnit中的斷言方法遵循CommonJS單元測試規(guī)范。QUnit支持有賴于jQuery 3.x的瀏覽器,包括Chrome、Edge、Firefox、Internet Explorer和Safari的各種版本。
QUnit安裝:https://qunitjs.com/
原文標題:10 trusty JavaScript test tools,作者:Paul Krill
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】