前端自動化測試Vue中TDD和單元測試示例詳解
1、簡單用例入門
Vue 提供了 @vue/test-utils 來幫助我們進(jìn)行單元測試,創(chuàng)建 Vue 項(xiàng)目的時(shí)候勾選測試選項(xiàng)會自動幫我們安裝
先來介紹兩個(gè)常用的掛載方法:
mount:會將組件以及組件包含的子組件都進(jìn)行掛載shallowMount:淺掛載,只會掛載組件,忽略子組件
再來看一個(gè)簡單的測試用例:
import { shallowMount } from "@vue/test-utils";
import HelloWorld from "@/components/HelloWorld.vue";
describe("HelloWorld.vue", () => {
it("renders props.msg when passed", () => {
const msg = "new message";
const wrapper = shallowMount(HelloWorld, {
propsData: { msg }
});
expect(wrapper.props("msg")).toBe(msg);
});
});
shallowMount 會返回一個(gè) wrapper,這個(gè) wrapper 上面會包含很多幫助我們測試的方法,參考:v1.test-utils.vuejs.org/zh/api/wrap…
2、快照測試
測試用例寫法如下: 第一次測試會保存 wrapper 的快照,第二次會比較當(dāng)前 wrapper 和快照的區(qū)別
describe("HelloWorld.vue", () => {
it("renders props.msg when passed", () => {
const msg = "new message";
const wrapper = shallowMount(HelloWorld, {
propsData: { msg }
});
expect(wrapper).toMatchSnapshot();
});
});
3、覆蓋率測試
覆蓋率測試是對測試完全程度的一個(gè)評估,測試覆蓋到的業(yè)務(wù)代碼越多,覆蓋率越高
在 jest.config.js 中我們可以設(shè)置 collectCoverageFrom,來設(shè)置需要進(jìn)行覆蓋率測試的文件
我們可以測試所有的 .vue 文件,忽略 node_modules 下所有文件
要注意,在 Vue 中配置 jest,參考:v1.test-utils.vuejs.org/zh/guides/#…
然后添加一條 script 命令,就能進(jìn)行測試了:
"test:unit": "vue-cli-service test:unit --coverage"
執(zhí)行命令會生成 coverage 文件夾,Icov-report/index.html 里會可視化展示我們的測試覆蓋率
4、結(jié)合 Vuex 進(jìn)行測試
如果我們在組件中引入了 Vuex 狀態(tài)或者使用了相關(guān)方法
在測試用例里,掛載組件的時(shí)候只需要傳入 vuex 的 store 即可
import store from "@/store/index";
const wrapper = mount(HelloWorld, {
store
});以上就是前端自動化測試Vue中TDD和單元測試示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Vue TDD單元測試的資料請關(guān)注腳本之家其它相關(guān)文章!
- vue前端測試開發(fā)watch監(jiān)聽data的數(shù)據(jù)變化
- springboot?vue測試平臺開發(fā)調(diào)通前后端環(huán)境實(shí)現(xiàn)登錄
- springboot?vue測試前端項(xiàng)目管理列表分頁功能實(shí)現(xiàn)
- springboot?vue測試平臺前端項(xiàng)目查詢新增功能
- springboot?vue接口測試HutoolUtil?TreeUtil處理樹形結(jié)構(gòu)
- springboot?vue接口測試前后端樹節(jié)點(diǎn)編輯刪除功能
- springboot?vue接口測試前端動態(tài)增刪表單功能實(shí)現(xiàn)
相關(guān)文章
vue中實(shí)現(xiàn)子組件相互切換且數(shù)據(jù)不丟失的策略詳解
項(xiàng)目為數(shù)據(jù)報(bào)表,但是一個(gè)父頁面中有很多的子頁面,而且子頁面中不是相互關(guān)聯(lián),但是數(shù)據(jù)又有聯(lián)系,所以本文給大家介紹了vue中如何實(shí)現(xiàn)子組件相互切換,而且數(shù)據(jù)不會丟失,并有詳細(xì)的代碼供大家參考,需要的朋友可以參考下2024-03-03
在Vue3中使用BabylonJs開發(fā)?3D的初體驗(yàn)
這篇文章主要介紹了在?Vue3?中使用?BabylonJs?開發(fā)?3D?是什么體驗(yàn),在本文中,向您展示了如何創(chuàng)建?Vue?組件、Babylon?類、在畫布上渲染場景以及創(chuàng)建?3D?網(wǎng)格,需要的朋友可以參考下2022-07-07
詳解vue-meta如何讓你更優(yōu)雅的管理頭部標(biāo)簽
這篇文章主要介紹了詳解vue-meta如何讓你更優(yōu)雅的管理頭部標(biāo)簽,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-01-01

