一、介紹
Jest是 Facebook 的一套開(kāi)源的 JavaScript 測(cè)試框架, 它自動(dòng)集成了斷言、JSDom、覆蓋率報(bào)告等開(kāi)發(fā)者所需要的所有測(cè)試工具,是一款幾乎零配置的測(cè)試框架。
二、安裝
- 初始化環(huán)境。生成package.json文件,在根目錄執(zhí)行 npm init -y 初始化環(huán)境配置
npm init -y
- 安裝jest
//因?yàn)閖est是用在開(kāi)發(fā)環(huán)境的,我們也加上--save-dev
npm install --save-dev jest
或者
npm install --save-dev jest babel-jest babel-core babel-preset-env
第一種是直接簡(jiǎn)單全局安裝;
第二種是安裝了babel-jest、 babel-core、 regenerator-runtime、babel-preset-env 這幾個(gè)依賴,為了讓我們可以使用ES6的語(yǔ)法特性進(jìn)行單元測(cè)試,ES6提供的 import 來(lái)導(dǎo)入模塊的方式,Jest本身是不支持的。
3. 注意事項(xiàng):
如果已經(jīng)安裝了babel一些列的工具后,使用import等es6的module語(yǔ)法還是報(bào)錯(cuò)的話,需要加一下配置:
-
在根路徑添加
babel.config.js文件
babel.config.js -
文件內(nèi)添加以下配置內(nèi)容:
//babel.config.js內(nèi)容 module.exports = { presets: [['@babel/preset-env', {targets: {node: 'current'}}]], };
三、配置
- 修改根目錄package.json文件:
打開(kāi)package.json文件,將script下的test的值修改為jest,這樣我們可以通過(guò)npm run test去調(diào)用
"scripts": {
"test": "jest"
}
-
在需要測(cè)試的同級(jí)目錄下建立_tests_文件夾(文件夾名字可以自定義,但最好語(yǔ)義化),_tests_文件夾里建測(cè)試文件:xxx.spec.js 或 xxx.test.js
xxx對(duì)應(yīng)需要測(cè)試的js文件名,方便查找,例如index.js的測(cè)試文件為index.spec.js.


四、執(zhí)行
1. 單次執(zhí)行:在執(zhí)行過(guò)一次測(cè)試,如果更新代碼后重新測(cè)試,需要再次執(zhí)行命令。
- 全局測(cè)試:在根目錄內(nèi)執(zhí)行命令 ' jest ',會(huì)自動(dòng)搜索到目錄內(nèi)所有的xxx.spec.js 和 xxx.test.js,并執(zhí)行測(cè)試邏輯
jest
- 針對(duì)單文件測(cè)試:在根目錄執(zhí)行命令 ' jest path '(path為測(cè)試文件的路徑),jest會(huì)根據(jù)路徑找到測(cè)試文件xxx.spec.js,執(zhí)行測(cè)試邏輯
jest js/xxx
或
jest js/xxx.spec.js
2. 伺服執(zhí)行,執(zhí)行一次命令后,測(cè)試程序保持監(jiān)聽(tīng),每次修改保存后自動(dòng)去執(zhí)行測(cè)試邏輯。
- 配置package.json,
在scripts內(nèi)添加兩個(gè)配置:"watch": "jest --watchAll", "coverage": "jest --coverage"
"scripts": {
"test": "jest",
"watch": "jest --watchAll",
"coverage": "jest --coverage"
}
- 執(zhí)行命令:jest js/index --watchAll,
這樣就能保持實(shí)時(shí)監(jiān)聽(tīng),想要停止就control+c
jest js/index --watchAll
五、補(bǔ)充
以上只是簡(jiǎn)單介紹了jest搭建,關(guān)于jest的用法就不做詳細(xì)介紹了,大家可以通過(guò)下邊的官方文檔來(lái)了解下~
【Jest中文文檔】
