摘要:轉(zhuǎn)載自樓主個(gè)人博客和入門初探在和作比較的時(shí)候兩者主要的不同就是的集成度比較高內(nèi)置斷言庫而需要搭配額外的斷言庫在此選擇了比較流行的作為斷言庫風(fēng)格的選擇其中又有好幾種斷言風(fēng)格我們經(jīng)常見到的其實(shí)就是風(fēng)格的其中我較喜歡因?yàn)樗梢灾苯右詫傩缘姆绞角度?/p>
Chai轉(zhuǎn)載自樓主個(gè)人博客 Mocha 和 Chai 入門初探
在和 jest 作比較的時(shí)候, 兩者主要的不同就是 jest 的集成度比較高內(nèi)置斷言庫, 而 mocha 需要搭配額外的斷言庫, 在此選擇了比較流行的 chai 作為斷言庫.
風(fēng)格的選擇其中 chai 又有好幾種斷言風(fēng)格, 我們經(jīng)常見到的其實(shí)就是 BDD 風(fēng)格的 should / expect.
其中我較喜歡 should, 因?yàn)樗梢灾苯右詫傩缘姆绞角度胨袃?nèi)置原生對(duì)象, 所以可以很方便的以 variable.should.equal(someValue) 的形式來書寫斷言, 和 expect 相比較可以省略一對(duì) () ... 如果是 expect 風(fēng)格的話, 上述示例代碼等價(jià)于 expect(variable).to.equal(someValue). 在一般情況下兩者的使用時(shí)幾乎相同的, expect 作為斷言的開始, should 接在想要斷言的變量之后. 但是有一些地方 should 就需要變換一下我上述所說的寫法了.
Shouldshould 實(shí)際上是給所有的對(duì)象都擴(kuò)充了一個(gè) getter 屬性 should, 如果你想在瀏覽器中運(yùn)行測(cè)試的話, should 在 IE 瀏覽器中會(huì)有一些問題. 正是因?yàn)?should 是擴(kuò)充了 Object.prototype, 所以如果變量的值為 null 或 undefined 的時(shí)候, 是無法使用 .should.equal() 的形式的, 因?yàn)?null, undefined 的原型不是 Object,所以should 不存在. 所以此時(shí)應(yīng)當(dāng)如下所示使用.
const sould = require("chai").should(); ... should.not.exist.(variable); // variable 的值不應(yīng)該是 null 或者 undefinedMocha
現(xiàn)在我們來看看如何對(duì) mocha 進(jìn)行配置以及上手的步驟. 我假定在 mocha 中寫測(cè)試的時(shí)候也同樣需要使用 ES6 語法, 還有一個(gè)關(guān)注點(diǎn)是如果我在 webpack.config.js 中已經(jīng)設(shè)置了 alias, 那么在寫測(cè)試代碼的時(shí)候, 我希望導(dǎo)入的文件也可以使用 alias 來保持我路徑的一致性以及與此同時(shí)帶來的便利性.
配置 下載依賴npm install --save-dev mocha chai
接下來只要在項(xiàng)目根目錄下新建文件夾 test, 在里面寫的測(cè)試文件以 *.test.js 命名, 接下來在 packag.json 文件中 配置 npm test 命令.
"npm test": "./node_modules/.bin/mocha"
還可以在 test 根目錄下新建一個(gè)配置文件 mocha.opts, 其中配置的選項(xiàng)相當(dāng)于給 mocha 命令加入了命令行參數(shù).
--recursive --ui bdd
具體的配置請(qǐng)參照文檔 Mocha - USAGE.
之后在終端輸入 npm run test 即可運(yùn)行測(cè)試.
支持 ES6上述只是配置好了基本的運(yùn)行環(huán)境, 如果需要支持 ES6 的話, 那么還需要兩個(gè)簡單的步驟.
npm install --save-dev babel-register
然后修改 mocha.opts
--recursive --ui bdd --require babel-register
完成, 現(xiàn)在已經(jīng)支持 ES6 語法了.
支持 Webpack 的 Alias如果不需要請(qǐng)?zhí)^此步驟, 需要的推薦一個(gè)本人基于一個(gè)開源庫修改的 babel 插件 babel-plugin-webpack-alias-resolve.
寫測(cè)試直接上代碼! 有一個(gè)對(duì) axios 經(jīng)過封裝的 ajax 函數(shù), 我現(xiàn)在對(duì)其進(jìn)行測(cè)試. 下面是代碼在 Gist 的地址 the test for ajax which based on axios
結(jié)束寫的很少 ... 正在實(shí)踐當(dāng)中, 其實(shí)測(cè)試上述那個(gè)文件的時(shí)候我已經(jīng)踩了一些坑了, 但是寫出來還是不夠多, 等踩多了總結(jié)一下踩過的那些坑.
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/86708.html
摘要:是測(cè)試用例,表示一個(gè)單獨(dú)的測(cè)試,是測(cè)試的最小單位。第一個(gè)參數(shù)是測(cè)試用例的名稱加應(yīng)該等于,第二個(gè)參數(shù)是一個(gè)實(shí)際執(zhí)行的函數(shù)。這里對(duì)異步代碼進(jìn)行測(cè)試時(shí)需要注意一點(diǎn),默認(rèn)一個(gè)單元測(cè)試最多執(zhí)行超時(shí)會(huì)報(bào)錯(cuò)。 Mocha簡介: 一個(gè)具有豐富特性的javascript 測(cè)試框架,支持多種斷言庫,異步代碼測(cè)試等,不僅可運(yùn)行在node.js 環(huán)境中還可以運(yùn)行在瀏覽器中。 一、安裝 // 全局安裝 npm ...
摘要:使用可以快速生成一個(gè)項(xiàng)目,其中包含了和以及覆蓋率統(tǒng)計(jì)的配置參考一個(gè)創(chuàng)建測(cè)試腳本的快速方法其他參考資料前端自動(dòng)化測(cè)試概覽測(cè)試之使用對(duì)項(xiàng)目進(jìn)行單元測(cè)試 showImg(https://segmentfault.com/img/bVbjfXr?w=600&h=317); 前言 測(cè)試可以提供快速反饋,根據(jù)測(cè)試用例覆蓋代碼,從而提升代碼開發(fā)效率和質(zhì)量。根據(jù)投入產(chǎn)出價(jià)值,通常迭代較快的業(yè)務(wù)邏輯不做...
摘要:使用可以快速生成一個(gè)項(xiàng)目,其中包含了和以及覆蓋率統(tǒng)計(jì)的配置參考一個(gè)創(chuàng)建測(cè)試腳本的快速方法其他參考資料前端自動(dòng)化測(cè)試概覽測(cè)試之使用對(duì)項(xiàng)目進(jìn)行單元測(cè)試 showImg(https://segmentfault.com/img/bVbjfXr?w=600&h=317); 前言 測(cè)試可以提供快速反饋,根據(jù)測(cè)試用例覆蓋代碼,從而提升代碼開發(fā)效率和質(zhì)量。根據(jù)投入產(chǎn)出價(jià)值,通常迭代較快的業(yè)務(wù)邏輯不做...
摘要:本文只討論單測(cè)的范疇,對(duì)集成測(cè)試有興趣的話,可以看下的集成測(cè)試代碼。前端單測(cè)現(xiàn)狀測(cè)試本質(zhì)上就是假定一個(gè)輸入,然后判斷得到預(yù)期的輸出。 原文發(fā)于我的博客:https://github.com/hwen/blogS... 要不要寫單測(cè)? 關(guān)于這個(gè) cnode 上就有個(gè)很有意思的討論 做個(gè)調(diào)查,你的 Node 應(yīng)用有寫單測(cè)嗎? 看完這個(gè)應(yīng)該會(huì)有結(jié)論?如果沒有,就回帖跟別人探討下~ 測(cè)試 測(cè)試...
閱讀 2510·2021-11-25 09:43
閱讀 2622·2021-11-16 11:50
閱讀 3305·2021-10-09 09:44
閱讀 3227·2021-09-26 09:55
閱讀 2853·2019-08-30 13:50
閱讀 1036·2019-08-29 13:24
閱讀 2100·2019-08-26 11:44
閱讀 2810·2019-08-26 11:37