摘要:是測試用例,表示一個多帶帶的測試,是測試的最小單位。第一個參數(shù)是測試用例的名稱加應該等于,第二個參數(shù)是一個實際執(zhí)行的函數(shù)。這里對異步代碼進行測試時需要注意一點,默認一個單元測試最多執(zhí)行超時會報錯。
Mocha簡介:
一個具有豐富特性的javascript 測試框架,支持多種斷言庫,異步代碼測試等,不僅可運行在node.js 環(huán)境中還可以運行在瀏覽器中。
一、安裝// 全局安裝 npm install -global mocha
// 在項目中安裝 npm install --save-dev mocha二、寫一個簡單的測試
//mocha-to-go | package.json | +---node_modules | +---src | sum.js | ---test sum.test.js
// 求函數(shù)所有參數(shù)的和 module.exports = sum = function () { let args = Array.from(arguments); let sum = 0; sum = args.reduce((s, x) => { return s +=x }); return sum; }
mocha 支持多種斷言庫,比如should.js 、expect.js 、chai.js 等,這里以chai.js 為例。選擇chai.js 的Expect風格的斷言,它是行為驅動開發(fā)(BDD)斷言的一種,接近于自然語言,容易理解。可運行在所有的瀏覽器中和node.js中
先安裝斷言庫chai.js
npm install chai --save-dev
const sum = require("../src/sum.js"); const expect = require("chai").expect; describe("測試 sum(1,2)", function () { it("sum(1+2) 應該等于 3", function () { expect(sum(1,2)).to.be.equal(3); }); });
測試腳本通常包含多個describe塊,每個塊都含有一個it塊,
describe(testName, exceFunc)
describe 第一個參數(shù)是這個測試過程的名稱,第二個參數(shù)應該是一個函數(shù),它包含了我們要測試的內(nèi)容,也就是我們要執(zhí)行的過程。
it 是測試用例,表示一個多帶帶的測試,是測試的最小單位。它是一個函數(shù)。第一個參數(shù)是測試用例的名稱("1 加 1 應該等于 2")
,第二個參數(shù)是一個實際執(zhí)行的函數(shù)。
這里我在package.json 中聲明了執(zhí)行腳本
"scripts": { "test": "mocha ./test/sum.test.js" }
也可以在項目目錄直接執(zhí)行
mocha ./test/sum.test.js
運行結果如圖:
三、對異步代碼進行測試Mocha中測試異步代碼比較簡單,只需要在測試用例結束時調(diào)用一下回調(diào)函數(shù)即可,通常回調(diào)函數(shù)寫作done(),這樣、Mocha就能獲知這時一個異步函數(shù),回調(diào)時才認為測試結束。
新建async.js,這里GET一個存在的json文件,來作為一個異步過程。
const request = require("request"); module.exports = asyncProc = function (callback) { request("https://github.com/Will233/koa-template/blob/master/mock/data.json",function (err, res, body) { callback(err, res, body) }); }
測試腳本
const expect = require("chai").expect; const request = require("request"); const asyncProc = require("../src/async.js"); describe("測試異步過程", function () { it("發(fā)送異步請求, response statusCode == 200", function (done){ asyncProc(function (err, res, body) { expect(res.statusCode).to.be.equal(200) done() }) }); });
mocha ./test/async.test.js
運行結果如下:
發(fā)現(xiàn)報錯了。這里對異步代碼進行測試時需要注意一點,Mocha默認一個單元測試最多執(zhí)行2000ms,超時會報錯??稍趫?zhí)行的時候用-t 或--timeout 指定超時閾值。
提高超時時間:
mocha -t 5000 ./test/async.test.js
運行結果如下:
Mocha 同樣支持了對返回promise的異步代碼進行測試。
我們改造一下上面請求的代碼,使其返回promise。
// async.js const asyncPromise = function () { return new Promise(function (resolve, reject) { request("https://github.com/Will233/koa-template/blob/master/mock/data.json",function (err, res, body) { if (err) { reject(err) } else { resolve(res) } }); }); }
編寫測試用例:
describe("測試異步過程 Promise", function () { it("發(fā)送異步請求, response statusCode == 200", function (){ return asyncPromise().then(function (res) { expect(res.statusCode).to.be.equal(200); }); }); });
運行結果如下:
Mocha 作為一個強大的測試框架,還有很多特性。以后慢慢了解咯。
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://systransis.cn/yun/89719.html
摘要:轉載自樓主個人博客和入門初探在和作比較的時候兩者主要的不同就是的集成度比較高內(nèi)置斷言庫而需要搭配額外的斷言庫在此選擇了比較流行的作為斷言庫風格的選擇其中又有好幾種斷言風格我們經(jīng)常見到的其實就是風格的其中我較喜歡因為它可以直接以屬性的方式嵌入 轉載自樓主個人博客 Mocha 和 Chai 入門初探 Chai 在和 jest 作比較的時候, 兩者主要的不同就是 jest 的集成度比較高內(nèi)置...
摘要:使用可以快速生成一個項目,其中包含了和以及覆蓋率統(tǒng)計的配置參考一個創(chuàng)建測試腳本的快速方法其他參考資料前端自動化測試概覽測試之使用對項目進行單元測試 showImg(https://segmentfault.com/img/bVbjfXr?w=600&h=317); 前言 測試可以提供快速反饋,根據(jù)測試用例覆蓋代碼,從而提升代碼開發(fā)效率和質(zhì)量。根據(jù)投入產(chǎn)出價值,通常迭代較快的業(yè)務邏輯不做...
摘要:使用可以快速生成一個項目,其中包含了和以及覆蓋率統(tǒng)計的配置參考一個創(chuàng)建測試腳本的快速方法其他參考資料前端自動化測試概覽測試之使用對項目進行單元測試 showImg(https://segmentfault.com/img/bVbjfXr?w=600&h=317); 前言 測試可以提供快速反饋,根據(jù)測試用例覆蓋代碼,從而提升代碼開發(fā)效率和質(zhì)量。根據(jù)投入產(chǎn)出價值,通常迭代較快的業(yè)務邏輯不做...
閱讀 3312·2023-04-25 14:35
閱讀 3426·2021-11-15 18:00
閱讀 2583·2021-11-12 10:34
閱讀 2504·2021-11-11 16:54
閱讀 3488·2021-10-08 10:12
閱讀 2770·2021-09-06 15:02
閱讀 3329·2021-09-04 16:48
閱讀 2806·2019-08-29 14:02