摘要:在中,需要添加源代碼以及斷言庫運(yùn)行測試使用瀏覽器打開,就會運(yùn)行測試,并且看到運(yùn)行結(jié)果可知,測試通過使用命令行測試對于習(xí)慣在終端敲命令行的程序員來說,用瀏覽器打開去進(jìn)行測試顯得非常不合時(shí)宜。
摘要: 如何使用Mocha在瀏覽器中測試JavaScript代碼?
本文所有代碼都在Fundebug/mocha-browser-test倉庫中。
在玩轉(zhuǎn)Node.js單元測試博客中,我介紹了測試框架Mocha,對后端Node.js代碼進(jìn)行測試。在這篇博客,我將介紹如何使用Mocha在瀏覽器中測試JavaScript代碼。
mocha init:初始化測試代碼安裝mocha(在國內(nèi)使用cnpm比npm更快):
sudo cnpm install -g mocha
執(zhí)行mocha init命令,可以自動(dòng)生成瀏覽器端的測試文件:
mocha init test
mocha會自動(dòng)創(chuàng)建一個(gè)test目錄,其中有4個(gè)文件,分別是:
mocha.js:Mocha源碼
mocha.css:Mocha源碼
tests.js:測試代碼
index.html:瀏覽器測試入口頁面
mocha.js與mocha.css是Mocha模塊自身的源代碼,因?yàn)樾枰跒g覽器中展示測試結(jié)果,因此需要Mocha的CSS文件;tests.js為測試代碼,為空文件,需要我們編寫;index.html為運(yùn)行測試的入門頁面,使用瀏覽器大概它就會運(yùn)行測試,并且展示測試結(jié)果。
index.html是理解Mocha瀏覽器測試的關(guān)鍵:
Mocha
可知:
index.html中導(dǎo)入了mocha.js, mocha.css和tests.js文件;
id為mocha的div是空的,測試結(jié)果的元素會插入到這個(gè)div;
mocha.setup("bdd")指定使用Mocha的BDD接口,mocha.run()表示運(yùn)行測試,測試代碼tests.js必須放在兩者之間,否則不會運(yùn)行測試;
運(yùn)行測試案例 add.js使用mocha init生成的測試代碼中沒有實(shí)際的測試案例,不妨添加一個(gè)簡單的add.js:
function add(a, b) { return a + b; }
可知,add是一個(gè)非常簡單的加法函數(shù)。
tests.js在tests.js添加針對add函數(shù)的測試代碼:
var should = chai.should(); describe("測試add函數(shù)", function() { it("1加1等于2", function() { var sum = add(1, 2); should.equal(sum, 3); }); it("1加2等于3", function() { var sum = add(1, 2); should.equal(sum, 3); }); });
在測試代碼中,我使用了斷言庫Chai。
index.html在index.html中,需要添加源代碼add.js以及斷言庫chai.js:
運(yùn)行測試Mocha
使用瀏覽器打開index.html,就會運(yùn)行測試,并且看到運(yùn)行結(jié)果:
可知,測試通過:)
mocha-phantomjs:使用命令行測試對于習(xí)慣在終端敲命令行的程序員來說,用瀏覽器打開index.html去進(jìn)行測試顯得非常不合時(shí)宜。
還好,有所謂的headless的瀏覽器PhantomJS,它沒有圖形界面,卻可以運(yùn)行前端代碼,方便用來測試。
mocha-phantomjs命令安裝phantomjs和mocha-phantomjs(phantomjs模塊更名為phantomjs-prebuilt):
sudo cnpm install -g phantomjs-prebuilt mocha-phantomjs
將Mocha和PhontomJS結(jié)合起來的是mocha-phantomjs,在終端執(zhí)行mocha-phantomjs命令,它會在PhantomJS中執(zhí)行Mocha測試代碼,并將結(jié)果展示在終端,非常方便:
mocha-phantomjs --path /usr/local/bin/phantomjs ./test/index.html 測試add函數(shù) ? 1加1等于2 ? 1加2等于3 2 passing (7ms)
--path選項(xiàng)指定了phantomjs的安裝路徑。這個(gè)必須指定,否則會報(bào)錯(cuò)"phantomjs terminated with signal SIGSEGV"。
另外,測試代碼tests.js中必須有describe語句,否則使用mocha-phantomjs執(zhí)行時(shí)會報(bào)錯(cuò)"mocha.run() was called with no tests"。
npm test命令mocha-phantomjs的測試命令比較長,可以在package.json中配置npm的test腳本:
"scripts": { "test": "mocha-phantomjs --path /usr/local/bin/phantomjs ./test/index.html" },
這樣,執(zhí)行npm test命令就可以運(yùn)行測試。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/95218.html
摘要:轉(zhuǎn)載自樓主個(gè)人博客和入門初探在和作比較的時(shí)候兩者主要的不同就是的集成度比較高內(nèi)置斷言庫而需要搭配額外的斷言庫在此選擇了比較流行的作為斷言庫風(fēng)格的選擇其中又有好幾種斷言風(fēng)格我們經(jīng)常見到的其實(shí)就是風(fēng)格的其中我較喜歡因?yàn)樗梢灾苯右詫傩缘姆绞角度? 轉(zhuǎn)載自樓主個(gè)人博客 Mocha 和 Chai 入門初探 Chai 在和 jest 作比較的時(shí)候, 兩者主要的不同就是 jest 的集成度比較高內(nèi)置...
摘要:為什么要寫單元測試減少提高代碼質(zhì)量,保證你的代碼是可測試的放心重構(gòu)當(dāng)你每個(gè)方法都寫了單元測試的時(shí)候,你每一個(gè)改動(dòng)都會影響相應(yīng)的單元測試,這樣你不用費(fèi)盡心思的考慮哪里會有影響,特別是復(fù)雜項(xiàng)目或非核心功能不易被測試到,從而導(dǎo)致的產(chǎn)生。 為什么要寫單元測試 減少bug 提高代碼質(zhì)量,保證你的代碼是可測試的 放心重構(gòu) 當(dāng)你每個(gè)方法都寫了單元測試的時(shí)候,你每一個(gè)改動(dòng)都會影響相應(yīng)的單元測試,這...
摘要:在前端進(jìn)階之路前端架構(gòu)設(shè)計(jì)測試核心這邊文章中通過分析了傳統(tǒng)手工測試的局限性去引出了測試驅(qū)動(dòng)開發(fā)的理念并介紹了一些測試工具這篇文章我將通過一個(gè)的項(xiàng)目去講解如何使用且結(jié)合官方推薦的去進(jìn)行單元測試的實(shí)戰(zhàn)一安裝我為本教程寫一個(gè)示例庫您可以直接 在《前端進(jìn)階之路: 前端架構(gòu)設(shè)計(jì)(3) - 測試核心》這邊文章中, 通過分析了傳統(tǒng)手工測試的局限性 去引出了測試驅(qū)動(dòng)開發(fā)的理念, 并介紹了一些測試工具....
摘要:但是,項(xiàng)目中的一些公共封裝,比如公共的組件公用的功能模塊等是可以使用單元測試的。因此特為組件庫引入單元測試,目的在于能減少組件的,避免重復(fù)的發(fā)布不必要的包。 項(xiàng)目github地址:https://github.com/yuanalina/installAsRequired這里必須要提前說明,前端項(xiàng)目的單元測試不是必須的,特別是業(yè)務(wù)型項(xiàng)目,增加單元測試反而會成為累贅,增加開發(fā)成本且無意義...
摘要:原文出處單元測試傻瓜教程請求經(jīng)常容易發(fā)生錯(cuò)誤,客戶端發(fā)送的數(shù)據(jù)出問題,服務(wù)器端返回的數(shù)據(jù)有誤都會導(dǎo)致請求錯(cuò)誤。設(shè)置在我們開始單元測試之前,我們需要安裝幾個(gè)必須的工具。我們將用它來向你們展示如何對進(jìn)行單元測試。 原文出處 :AJAX單元測試傻瓜教程 Ajax 請求經(jīng)常容易發(fā)生錯(cuò)誤,客戶端發(fā)送的數(shù)據(jù)出問題,服務(wù)器端返回的數(shù)據(jù)有誤都會導(dǎo)致 Ajax 請求錯(cuò)誤。你不能保證與服務(wù)器的連接總是工作...
閱讀 1533·2021-11-23 09:51
閱讀 3647·2021-09-26 09:46
閱讀 2136·2021-09-22 10:02
閱讀 1856·2019-08-30 15:56
閱讀 3334·2019-08-30 12:51
閱讀 2238·2019-08-30 11:12
閱讀 2069·2019-08-29 13:23
閱讀 2331·2019-08-29 13:16