前言:最近要求要寫(xiě)單元測(cè)試了,可是對(duì)單元測(cè)試并沒(méi)有什么了解,于是趕緊各種google。
最后簡(jiǎn)單的來(lái)說(shuō),就是與真實(shí)業(yè)務(wù)邏輯代碼完全隔離的另一份差不多相同的代碼,這些代碼就叫測(cè)試代碼,可以單獨(dú)只測(cè)試一個(gè)方法,一個(gè)組件,或者對(duì)一個(gè)小功能模塊的測(cè)試,在你的真實(shí)業(yè)務(wù)邏輯代碼運(yùn)行時(shí)先運(yùn)行與之對(duì)應(yīng)的測(cè)試代碼,看是否達(dá)到了預(yù)期的要求,做到真實(shí)運(yùn)行前知道錯(cuò)誤并且處理。
比如,要測(cè)試一個(gè)求和的方法,傳入2+2,是否進(jìn)行了正確的相加計(jì)算并返回了自己期望的正確的值呢?
開(kāi)始:jest,是一個(gè)專門(mén)對(duì)javascript代碼進(jìn)行測(cè)試的,以前是fecebook自家的,后來(lái)開(kāi)源了,用的人也不少,功能很強(qiáng)大,
使用npm安裝:
npm install --save-dev jest
或者通過(guò)yarn安裝:
yarn add --dev jest
將下面的配置部分添加到你的 package.json 里面:
{
"scripts": {
"test": "jest"
}
}
好了,就是這么簡(jiǎn)單,安裝完成了!
開(kāi)始編寫(xiě)測(cè)試代碼:
在項(xiàng)目中新建文件夾:test 測(cè)試的代碼會(huì)全部寫(xiě)在這里,命名格式為,如要測(cè)試a.js,相對(duì)應(yīng)的測(cè)試代碼就是a.test.js,
完成后如圖。
簡(jiǎn)單的例子,求兩個(gè)數(shù)相加,是否是我期待的和:
要測(cè)試的和與之對(duì)應(yīng)的測(cè)試代碼寫(xiě)好后,運(yùn)行:npm test
測(cè)試通過(guò)!沒(méi)有報(bào)錯(cuò),看了這個(gè)方法還是可靠的,那么將toBe(4)改成5,來(lái)看看他是如何報(bào)錯(cuò)的。
報(bào)錯(cuò)是不是很精準(zhǔn)?
jest使用匹配器讓你來(lái)用不同的方式測(cè)試值,不同作用的匹配器太多了,比如:
toBeNull 只匹配 null
toBeUndefined 只匹配 undefined
toBeDefined 與 toBeUndefined 相反
toBeTruthy 匹配任何 if 語(yǔ)句為真
toBeFalsy 匹配任何 if 語(yǔ)句為假
還有其他相對(duì)應(yīng)的string,array,object的匹配器,還有其他如當(dāng)你運(yùn)行異步代碼時(shí),Jest 需要知道它當(dāng)前測(cè)試的異步代碼什么時(shí)候完成,才可以運(yùn)行到下一個(gè)測(cè)試,最后jest官網(wǎng)在此(支持中文):https://facebook.github.io/jest/zh-Hans/