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