最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

karma+webpack搭建vue單元測(cè)試環(huán)境的方法示例

 更新時(shí)間:2018年05月24日 10:11:54   作者:MarxJiao  
本篇文章主要介紹了karma+webpack搭建vue單元測(cè)試環(huán)境的方法示例,這次搭建的測(cè)試環(huán)境和開發(fā)環(huán)境隔離,所以理論上適用所有使用vue的開發(fā)環(huán)境。感興趣的小伙伴們可以參考一下

最近做了一次關(guān)于vue組件自動(dòng)化測(cè)試的分享,現(xiàn)在將vue組件單元測(cè)試環(huán)境搭建過程整理一下。這次搭建的測(cè)試環(huán)境和開發(fā)環(huán)境隔離,所以理論上適用所有使用vue的開發(fā)環(huán)境。

準(zhǔn)備

這篇文章的重點(diǎn)在于搭建測(cè)試環(huán)境,所以我隨便寫了個(gè)webpack的vue開發(fā)環(huán)境。

代碼地址:https://github.com/MarxJiao/vue-karma-test

目錄結(jié)構(gòu)如下

目錄結(jié)構(gòu)

app.vue和child.vue代碼

app.vue

child.vue

運(yùn)行效果如下:

 

運(yùn)行效果

測(cè)試環(huán)境搭建

注意:這里使用的是webpack 1.x的版本,后面有介紹webpack 2+版本的配置,思路大同小異。

安裝karma

因?yàn)閗arma是要在命令中運(yùn)行的,所以先安裝karma-cli:npm install -g karma-cli

安裝karma:npm install karma --save-dev

在項(xiàng)目根目錄執(zhí)行:karma init

這時(shí)會(huì)提示使用的測(cè)試框架,我們可以使用鍵盤的上下左右來選擇框架,有jasmine、mocha、qunit、nodeunit、nunit可供選擇,如果想用其他框架也可以自己填寫。這里我們使用jasmine作為測(cè)試框架,jasmine自帶斷言庫,就不用引入其它的庫了。

選擇框架

之后提示是否使用require.js,這里我們不使用。

use require.js

選擇瀏覽器,可以多選。單元測(cè)試只需要能運(yùn)行js的環(huán)境就好了,不需要界面,所以我們選擇PhantomJS。注意PhantomJS需要提前安裝在電腦上,phantomjs安裝包。嫌麻煩的話選擇chrome最方便了。

選擇瀏覽器

填寫測(cè)試腳本存放位置,支持通用匹配。我們放在test/unit目錄下,并以.spec.js結(jié)尾。

腳本文件

這時(shí)會(huì)提示沒有匹配的文件,因?yàn)槲覀冞€沒開始寫測(cè)試用例,所以先忽略。

提示沒匹配到文件

是否有需要排除的符合前面格式的問文件?直接跳過。

排除文件

是否讓karma監(jiān)控所有文件,并在文件修改時(shí)自動(dòng)執(zhí)行測(cè)試。因?yàn)槭谴瞽h(huán)境階段,我們先選no。

是否開啟watch

之后按回車,我們就能看到在項(xiàng)目根目錄已經(jīng)生成了karma的配置文件karma.conf.js。

 

目錄

安裝依賴

執(zhí)行上面的操作可以看到karma為我們安裝了如下依賴,karma-jasmine是karma的jasmine插件,karma-phantomjs-launcher是打開phantomjs的插件

karma自己安裝的依賴

測(cè)試框架選擇jasmine,安裝jasmine-core

使用webpack打包vue組件,需要安裝webpack、karma-webpack、vue-loader、vue-template-compiler、css-loader

使用bable處理ES6語法,安裝babel-core、babel-loader、babel-preset-es2015

執(zhí)行:npm install --save-dev jasmine-core webpack karma-webpack vue-loader vue-template-compiler css-loader babel-core babel-loader babel-preset-es2015

修改配置文件

先在karma.conf.js頂部引用webpack

karma.conf.js

在配置項(xiàng)中加入webpack配置

karma.conf.js

在預(yù)處理選項(xiàng)中添加webpack處理的文件。這里我們用webpack處理測(cè)試用例。

karma.conf.js

編寫第一個(gè)測(cè)試

編寫一個(gè)測(cè)試用例來運(yùn)行,我們先測(cè)試下app.vue文件加載后title值是否符合預(yù)期。新建test文件夾,test文件夾下建立unit文件夾,unit文件夾下建立app.spec.js文件。目錄結(jié)構(gòu)如下:

目錄

app.spec.js內(nèi)容如下

test/unit/app.spec.js

在當(dāng)前目錄打開命令行,輸入karma start,這時(shí)karma會(huì)啟動(dòng)一個(gè)服務(wù)來監(jiān)聽測(cè)試。

karma start

不要關(guān)閉當(dāng)前命令窗口,再打開一個(gè)命令窗口,輸入karma run,這時(shí)我們會(huì)看到測(cè)試通過的提示。

karma run

查看測(cè)試覆蓋率

單元測(cè)試屬于白盒測(cè)試,測(cè)試覆蓋率也是測(cè)試指標(biāo)之一。karma提供了karma-coverage來查看測(cè)試覆蓋率。

安裝karma-coverage:npm install karma-coverage --save-dev

配置覆蓋率,在預(yù)處理的文件上加coverage

karma.conf.js

在報(bào)告中使用coverage

karma.conf.js

配置覆蓋率報(bào)告的查看方式

karma.conf.js

再次執(zhí)行karma start和karma run,我們能看到生成了覆蓋率查看文件夾

目錄

在瀏覽器中打開上圖中的index.html我們能看到覆蓋率已經(jīng)生成。

index.html

點(diǎn)擊「unit/」我們看到app.spec.js代碼有3036行,測(cè)試覆蓋率是打包之后文件的覆蓋率,

unit/index.html

點(diǎn)開文件,果然是打包之后的代碼。這個(gè)覆蓋率顯然不是我們想要測(cè)試的源文件的覆蓋率。

unit/app.spec.js

怎么辦呢?想想開發(fā)時(shí)瀏覽器打開的也是編譯后的文件,我們?cè)趺炊ㄎ辉创a呢?

Bingo! sourcemap。

當(dāng)然這里只用sourcemap是不夠的,測(cè)試覆蓋率神器isparta閃亮登場。

安裝:npm install --save-dev isparta isparta-loader

修改vue的js loader

karma.conf.js

再次執(zhí)行karma start和karma run,我們能看到測(cè)試覆蓋率文件已經(jīng)能找到源文件了,并且覆蓋率只有js代碼,并不包括無關(guān)的template和style,簡直太好用了有沒有。

index.html

src/index.html

src/app.vue.html

等等,怎么還有那個(gè)3000多行的文件,這個(gè)覆蓋率沒有用,能去掉嗎?答案是肯定的。我們只需要把karma.conf.js中preprocessors的coverage去掉即可。

karma.conf.js

再次執(zhí)行karma start和karma run,我們能看到覆蓋率的文件變成這樣了。

index.html

最后我們可以把karma的watch模式打開,之后只需要運(yùn)行karma start就能監(jiān)控文件變動(dòng)并自動(dòng)執(zhí)行測(cè)試了。

karma.conf.js

至此karma+webpack搭建的vue單元測(cè)試環(huán)境就已經(jīng)ready了。

文章圖片較多,略顯拖沓,不妥之處歡迎吐槽,歡迎拍磚。

關(guān)于如何寫測(cè)試腳本,請(qǐng)看這篇文章Vue單元測(cè)試case寫法

更新webpack2

以上內(nèi)容基于webpack 1.x 版本,如果使用webpack 2以上版本的話,需要將isparta-loader換成istanbul-instrumenter-loader,并使用karma-coverage-istanbul-reporter 生成測(cè)試報(bào)告。配置方法:https://github.com/MarxJiao/vue-karma-test/blob/webpack2/karma.conf.js

相關(guān)鏈接

Vue單元測(cè)試case寫法

Karma官網(wǎng)

Vue Unit Testing

isparta loader

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue使用formData格式類型上傳文件的示例

    Vue使用formData格式類型上傳文件的示例

    這篇文章主要介紹了Vue使用formData格式類型上傳文件的示例代碼,代碼簡單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • vue項(xiàng)目中onscroll的坑及解決

    vue項(xiàng)目中onscroll的坑及解決

    這篇文章主要介紹了vue項(xiàng)目中onscroll的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Vue中的同步調(diào)用和異步調(diào)用方式

    Vue中的同步調(diào)用和異步調(diào)用方式

    這篇文章主要介紹了Vue中的同步調(diào)用和異步調(diào)用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • vue2+element-ui+nodejs實(shí)現(xiàn)圖片上傳和修改圖片到數(shù)據(jù)庫的方法

    vue2+element-ui+nodejs實(shí)現(xiàn)圖片上傳和修改圖片到數(shù)據(jù)庫的方法

    在Web開發(fā)中經(jīng)常需要使用圖片,有時(shí)候需要對(duì)圖片進(jìn)行上傳,這篇文章主要給大家介紹了關(guān)于vue2+element-ui+nodejs實(shí)現(xiàn)圖片上傳和修改圖片到數(shù)據(jù)庫的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-04-04
  • Vue插件之滑動(dòng)驗(yàn)證碼

    Vue插件之滑動(dòng)驗(yàn)證碼

    這篇文章主要為大家詳細(xì)紹介紹了Vue插件之滑動(dòng)驗(yàn)證碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • vue項(xiàng)目中自定義video視頻控制條的實(shí)現(xiàn)代碼

    vue項(xiàng)目中自定義video視頻控制條的實(shí)現(xiàn)代碼

    這篇文章主要介紹了vue項(xiàng)目中自定義video視頻控制條的實(shí)現(xiàn)代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 淺談Vue服務(wù)端渲染框架Nuxt的那些事

    淺談Vue服務(wù)端渲染框架Nuxt的那些事

    這篇文章主要介紹了淺談Vue服務(wù)端渲染框架Nuxt的那些事,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-12-12
  • Vue?elementUI實(shí)現(xiàn)樹形結(jié)構(gòu)表格與懶加載

    Vue?elementUI實(shí)現(xiàn)樹形結(jié)構(gòu)表格與懶加載

    這篇文章主要介紹了通過Vue和elementUI實(shí)現(xiàn)樹形結(jié)構(gòu)表格與懶加載,文中的示例代碼講解詳細(xì),感興趣的小伙伴快來跟隨小編一起學(xué)習(xí)一下吧
    2022-01-01
  • Vue.js進(jìn)行查詢操作的實(shí)例詳解

    Vue.js進(jìn)行查詢操作的實(shí)例詳解

    這篇文章主要介紹了Vue.js進(jìn)行查詢操作的實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-08-08
  • 前端面試之vue2和vue3的區(qū)別有哪些

    前端面試之vue2和vue3的區(qū)別有哪些

    這篇文章主要為大家介紹了前端面試之vue2和vue3的區(qū)別有哪些,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05

最新評(píng)論

夏河县| 临武县| 岑溪市| 巍山| 康平县| 湘潭市| 叙永县| 沙坪坝区| 繁昌县| 桦甸市| 阜康市| 茂名市| 万载县| 中牟县| 北宁市| 平武县| 新巴尔虎右旗| 板桥市| 巴中市| 四平市| 乡城县| 和龙市| 日喀则市| 东至县| 澄城县| 大同县| 安陆市| 洱源县| 嘉善县| 西充县| 高台县| 肃南| 平顺县| 泗阳县| 黄石市| 衡山县| 镇坪县| 普安县| 滨海县| 呼伦贝尔市| 卢龙县|