成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

使用karma+mocha+chai+sinon+@vue/test-utils為你的組件庫增加單元

happen / 767人閱讀

摘要:但是,項目中的一些公共封裝,比如公共的組件公用的功能模塊等是可以使用單元測試的。因此特為組件庫引入單元測試,目的在于能減少組件的,避免重復(fù)的發(fā)布不必要的包。

項目github地址:https://github.com/yuanalina/installAsRequired
這里必須要提前說明,前端項目的單元測試不是必須的,特別是業(yè)務(wù)型項目,增加單元測試反而會成為累贅,增加開發(fā)成本且無意義,業(yè)務(wù)型的項目需求常常變動,UI也經(jīng)常更改,增加單元測試,需要在開發(fā)過程中不斷更新開發(fā)測試用例,增加開發(fā)成本。但是,項目中的一些公共封裝,比如公共的組件、公用的功能模塊等是可以使用單元測試的。

為什么組件庫需要使用單元測試

搭建完組件庫的環(huán)境后,進入開發(fā)階段,當開發(fā)完成組件,在說明文檔中調(diào)試完畢后,到正式在項目中使用組件時,發(fā)現(xiàn)沒有合適的項目或者說合適的方法去確保組件本身功能是沒有問題了,再引用到項目中。畢竟組件是通過發(fā)布為npm包的形式為其他項目所使用,如果組件本身就有很多bug,那調(diào)試過程將是很繁瑣的,需要不斷的重復(fù)發(fā)布npm包,項目更新引用npm包,繁瑣的操作浪費本就寶貴的開發(fā)時間。
因此特為組件庫引入單元測試,目的在于能減少組件的bug,避免重復(fù)的發(fā)布不必要的npm包。

技術(shù)棧

組件庫單元測試,使用的各技術(shù)為:karma+mocha+chai+sinon+@vue/test-utils。下面做簡單介紹,并貼上個人覺得簡單有效的學習鏈接作為參考。

karma

karma是一個測試運行器,為開發(fā)者提供高效的測試環(huán)境,主要作用是將項目運行在各種主流Web瀏覽器進行測試。
關(guān)于karma的學習,建議看官方文檔。
組件庫項目是通過vue-cli搭建的,項目生成時karma相關(guān)配置就已經(jīng)設(shè)置好了,關(guān)于karma,可以先作為了解即可。

mocha

mocha是一個測試框架,兼容多種斷言庫,mocha的學習可以看阮一峰老師的測試框架 Mocha 實例教程進行了解。

chai

chai是一個測試斷言庫,所謂斷言,就是對組件做一些操作,并預(yù)言產(chǎn)生的結(jié)果。如果測試結(jié)果與斷言相同則測試通過。chai的學習可以參閱Chai.js斷言庫API中文文檔

sinon

sinon是一個測試工具,可以使用sinon來進行模擬http等異步請求操作,作為間諜監(jiān)聽回調(diào)函數(shù)調(diào)用等功能來幫助我們更輕松實現(xiàn)測試。sinon學習參閱:sinon入門,關(guān)于模擬http請求:利用SinonJS測試 AJAX 請求例子

@vue/test-utils

@vue/test-utils是vue官方推薦的vue測試工具,使用這個工具我們可以讓我們更方便的測試vue項目。官方文檔:vue-test-utils

環(huán)境搭建

在用vue-cli構(gòu)建項目時,Set up unit test輸入y(yes),Pick a test runner 選擇Karma and mocha即可生成單元測試開發(fā)環(huán)境

什么?你的項目生成時Set up unit test輸入的是n(no)?別著急,跟著下面步驟來,搭建環(huán)境。

1、首先安裝全部單元測試需要的依賴

npm i -D karma karma-webpack phantomjs-prebuilt karma-phantomjs-launcher karma-phantomjs-shim karma-chrome-launcher karma-sourcemap-loader mocha karma-mocha sinon chai sinon-chai karma-sinon-chai kbaocunrma-spec-reporter karma-coverage @vue/test-utils

2、將vue-cli中關(guān)于單元測試的相關(guān)文件copy到項目相應(yīng)位置

3、修改package.json,增加單元測試啟動命令

"unit": "cross-env BABEL_ENV=test karma start test/unit/karma.conf.js --single-run"

4、修改、增加chrome運行環(huán)境
安裝chrome相關(guān)依賴

npm i -D chromedriver karma-chrome-launcher

修改karma.conf.js文件

到這里環(huán)境就搭建完畢了,在src/components目錄中增加一個HelloWorld.vue,執(zhí)行npm run unit命令就可以將單元測試跑起來啦
目錄結(jié)構(gòu):

運行結(jié)果,看見一片飄綠就是成功了

測試用例開發(fā)示例

環(huán)境搭建完成就可以進行測試用例的開發(fā)了,這里以button組件為例示范測試用例如何開發(fā)
在test/unit/specs目錄中創(chuàng)建一個以.spec.js結(jié)尾的文件,在文件中引入需要測試的.vue文件即可

運行結(jié)果:

踩過的坑

不得不說,從搭建單元測試到開發(fā)環(huán)境到完成測試用例開發(fā),真的是踩坑無數(shù)。。。這里做一個小小匯總,希望當你開發(fā)中遇到類似問題能對你有所幫助,也作為我個人的一個記錄
1、karma.conf.js中的browsers參數(shù)需要改成Chrome,并安裝chrome相關(guān)依賴;
2、要測試的vue組件有依賴其他第三方插件,需要在@vue/test-utils中引入localVue,并將第三方插件注冊到localVue中,mount掛載組件生成wrapper時,將localVue作為參數(shù)傳遞;
3、要測試的組件引入element-ui,除了要在localVue中注冊外,還需引入@vue/test-utils的config,并進行配置:

    config.stubs.transition = false  
    config.stubs["transition-group"] = false

4、使用了element-ui的按鈕等元素,綁定原生事件(比如點擊事件)時,加上.native:@click.native="click"
5、有異步的內(nèi)容,比如延時定時器,不要忘記done(),否則不會被捕獲;
還有很多不知為何會發(fā)生的錯誤,也許是我的打開方式不對?小伙伴們開發(fā)中有好的方法歡迎指正~~

本文結(jié)束啦~希望對你有所幫助。。學無止境,與諸君共勉~~

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/101299.html

相關(guān)文章

  • React+Redux單元測試一小時入門

    摘要:可以監(jiān)控文件變化自動執(zhí)行單元測試,可以緩存測試結(jié)果,可以顯示測試過程中的變量測試框架。執(zhí)行單元測試三測試在的理念中,組件應(yīng)該分為視覺組件和高階組件,與邏輯分離,更利于測試。 一、工具介紹 karma:測試過程管理工具。可以監(jiān)控文件變化自動執(zhí)行單元測試,可以緩存測試結(jié)果,可以console.log顯示測試過程中的變量 mocha:測試框架。提供describe,it,beforeEac...

    xiongzenghui 評論0 收藏0
  • 前端單元測試初探

    摘要:本文只討論單測的范疇,對集成測試有興趣的話,可以看下的集成測試代碼。前端單測現(xiàn)狀測試本質(zhì)上就是假定一個輸入,然后判斷得到預(yù)期的輸出。 原文發(fā)于我的博客:https://github.com/hwen/blogS... 要不要寫單測? 關(guān)于這個 cnode 上就有個很有意思的討論 做個調(diào)查,你的 Node 應(yīng)用有寫單測嗎? 看完這個應(yīng)該會有結(jié)論?如果沒有,就回帖跟別人探討下~ 測試 測試...

    isLishude 評論0 收藏0
  • 前端組件的測試

    摘要:的配置文件是為了解析那些需要測試的源文件相關(guān)的文件,然后再給的單元測試用例去識別。其作用是僅僅渲染至虛擬節(jié)點,不會返回真實的節(jié)點,能極大提高測試性能。 為解放勞動力,發(fā)展生產(chǎn)力 測試有了這般變化: 鼠標點擊手動測試 -> 用腳本模擬,自動化測試 Vue中的組件測試 需要安裝的包 全局安裝:babel、mocha、karma 其他局部安裝的包在下面的【測試環(huán)境搭建】最下方配置文件中給出...

    haobowd 評論0 收藏0
  • 深入Vue3+TypeScript技術(shù)棧-coderwhy大神新課 王紅元

    摘要:是一個測試框架,在中配合斷言庫實現(xiàn)單元測試。腳本命名方式為組件名。單元測試默認測試目錄下除了之外的所有文件,可在文件中修改?;厥?,一般在每個測試腳本測試完成后執(zhí)行回收。等元素事件名稱配置項觸發(fā)和事件,既觸發(fā)點擊事件。 ??百度網(wǎng)盤??提取碼:u6C4在使用vue-cli創(chuàng)建項目的時候,會提示要不要安裝單元測試和e2e測試。...

    番茄西紅柿 評論0 收藏2637
  • Vue單元測試實戰(zhàn)教程(Mocha/Karma + Vue-Test-Utils + Chai)

    摘要:在前端進階之路前端架構(gòu)設(shè)計測試核心這邊文章中通過分析了傳統(tǒng)手工測試的局限性去引出了測試驅(qū)動開發(fā)的理念并介紹了一些測試工具這篇文章我將通過一個的項目去講解如何使用且結(jié)合官方推薦的去進行單元測試的實戰(zhàn)一安裝我為本教程寫一個示例庫您可以直接 在《前端進階之路: 前端架構(gòu)設(shè)計(3) - 測試核心》這邊文章中, 通過分析了傳統(tǒng)手工測試的局限性 去引出了測試驅(qū)動開發(fā)的理念, 并介紹了一些測試工具....

    RebeccaZhong 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<