Vue 項目引入單元測試

目前hips采用的單測組合是jest + Vue-Test-Utils,前端單元測試聪全,就是要在項目里加上這兩個配置。

采用 jest + Vue Test Utils進行單元測試的原因

1.JestFacebook的一套開源的 JavaScript 測試框架辅辩, 它自動集成了斷言难礼、JSDom、覆蓋率報告等開發(fā)者所需要的所有測試工具玫锋,配置較少蛾茉,對vue框架友好。

2.Vue Test UtilsVue.js 官方的單元測試實用工具庫撩鹿,為jest和vue提供了一個橋梁谦炬,暴露出一些接口,讓我們更加方便的通過Jest為Vue應(yīng)用編寫單元測試节沦。

3.vue-cli 默認的單元測試也是使用的這套方案

現(xiàn)在我們分幾種情況來考慮一下:

  1. 基于vue-cli3 創(chuàng)建項目

首先是全局安裝vue-cli键思,現(xiàn)在已經(jīng)是最新4.x,如果安裝3.x可以 npm install -g @vue/cli@3.x

npm install -g @vue/cli
# OR
yarn global add @vue/cli

接著我們可以使用vue-cli去創(chuàng)建一個vue項目了

vue create test-demo

命令輸入之后 我們有defaultManually select features兩個選項甫贯,default是默認吼鳞,回車之后就整個配置好,Manually select features是手動選擇那些配置要加入到項目中叫搁,我們選Manually select features這個選項赔桌。

image.png

我們選中unit testing選項(附:選中與取消是按空格鍵盤)一路回車,我們看項目需要渴逻,然后選擇構(gòu)建

image.png

test選擇jest疾党,當(dāng)然選擇mocha也可以,一路回車惨奕,通過vue-cli3我們就完成了構(gòu)建一個項目雪位。

image.png

進入到項目中,直接使用命令即可進行單測梨撞,單測的代碼寫在tests/unit目錄下雹洗。

  1. 基于vue-cli3創(chuàng)建項目(但未引入jest)

有時候我們選擇了default模式一路暢通就建好了項目,或者本身項目是基于海馬匯標(biāo)準(zhǔn)子應(yīng)用工程去構(gòu)建的聋袋,這時候我們想給項目加個單測部分队伟,怎么搞呢?

vue add unit-jest

我們在項目目錄下幽勒,執(zhí)行上面的命令嗜侮,它就會幫我們?nèi)グ惭bjest模塊,緊接著啥容,我們的項目就可以進行單元測試了锈颗。

  1. 普通vue項目

還有一些老的項目,可能不是基于vue-cli3 去創(chuàng)建的咪惠,本著良心運維的原則击吱,我們也提供如下指導(dǎo)。

jest@vue/test-utils 是我們的單測依賴遥昧,vue-jest是一個 預(yù)處理器覆醇,如果不安裝vue-jest朵纷,jest無法處理.vue文件。

npm install --save-dev babel-plugin-transform-vue-jsx jest @vue/test-utils jest-serializer-vue  babel-jest vue-jest

# OR

yarn add -S babel-plugin-transform-vue-jsx jest @vue/test-utils jest-serializer-vue  babel-jest vue-jest
 在`package.json`里加入jest命令命令
//package.json
"scripts": {
    "unit": "jest --config test/unit/jest.conf.js --coverage",   
}

創(chuàng)建測試目錄永脓,新建測試配置文件

mkdir test/unit
vim jest.conf.js

jest.conf.js 配置如下

const path = require('path');

module.exports = {
  rootDir: path.resolve(__dirname, '../../'),
  moduleFileExtensions: [
    'js',
    'json',
    'vue',
  ],
  moduleNameMapper: {
    '^@/(.*)$': '<rootDir>/src/$1',  // @路徑轉(zhuǎn)換袍辞,例如:@/views/shop/info.vue 
  },
  transform: {
    '^.+\\.js$': '<rootDir>/node_modules/babel-jest',
    '.*\\.(vue)$': '<rootDir>/node_modules/vue-jest',
  },
  testPathIgnorePatterns: [
    '<rootDir>/test/e2e',
  ],
  snapshotSerializers: ['<rootDir>/node_modules/jest-serializer-vue'],
  setupFiles: ['<rootDir>/test/unit/setup'],
  coverageDirectory: '<rootDir>/test/unit/coverage',
  collectCoverageFrom: [
    'src/**/*.{js,vue}',
    '!src/main.js',
    '!src/router/departmentalExpenses.js',
    '!**/node_modules/**',
  ],
};

unit目錄下我們再建立一個specs目錄,用于存放我們的測試用例常摧,不建立也可以搅吁。執(zhí)行test命令時,會自動檢查文件后綴為spec.js的文件進行單元測試落午,并生成測試覆蓋數(shù)據(jù)谎懦。

vue項目中引入jestVue-Test-Utils 通常情況就這幾種,后續(xù)有新的方案溃斋,會再補充上來界拦,也歡迎指正。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末盐类,一起剝皮案震驚了整個濱河市寞奸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌在跳,老刑警劉巖枪萄,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異猫妙,居然都是意外死亡瓷翻,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門割坠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來齐帚,“玉大人,你說我怎么就攤上這事彼哼《酝” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵敢朱,是天一觀的道長剪菱。 經(jīng)常有香客問我,道長拴签,這世上最難降的妖魔是什么孝常? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮蚓哩,結(jié)果婚禮上构灸,老公的妹妹穿的比我還像新娘。我一直安慰自己岸梨,他們只是感情好喜颁,可當(dāng)我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布稠氮。 她就那樣靜靜地躺著,像睡著了一般洛巢。 火紅的嫁衣襯著肌膚如雪括袒。 梳的紋絲不亂的頭發(fā)上次兆,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天稿茉,我揣著相機與錄音,去河邊找鬼芥炭。 笑死漓库,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的园蝠。 我是一名探鬼主播渺蒿,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼彪薛!你這毒婦竟也來了茂装?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤善延,失蹤者是張志新(化名)和其女友劉穎少态,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體易遣,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡彼妻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了豆茫。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侨歉。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖揩魂,靈堂內(nèi)的尸體忽然破棺而出幽邓,到底是詐尸還是另有隱情,我是刑警寧澤火脉,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布牵舵,位于F島的核電站,受9級特大地震影響忘分,放射性物質(zhì)發(fā)生泄漏棋枕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一妒峦、第九天 我趴在偏房一處隱蔽的房頂上張望重斑。 院中可真熱鬧,春花似錦肯骇、人聲如沸窥浪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽漾脂。三九已至假颇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間骨稿,已是汗流浹背笨鸡。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留坦冠,地道東北人形耗。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像辙浑,于是被迫代替她去往敵國和親激涤。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容