国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vitest單元測(cè)試配合@vue/test-utils之組件單元測(cè)試篇

這篇具有很好參考價(jià)值的文章主要介紹了vitest單元測(cè)試配合@vue/test-utils之組件單元測(cè)試篇。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

what is vitest & test-utils

vitest 是由 vite 提供支持的極速單元測(cè)試框架,VueTestUtils 是 Vue.js 的官方測(cè)試實(shí)用程序庫(kù),vitest 本身是不支持單元組件測(cè)試的,需要配合 test-utils 來(lái)完成組件單元測(cè)試,安裝與基本 API 就不再贅述,學(xué)會(huì)閱讀文檔與查找資料是一個(gè)程序員的基本功

demo

/* Component */
<template>
  <div>
    <div class="test-utils-value">值為:{{ num }}</div>
    <button class="test-utils-button" @click="increment">測(cè)試按鈕</button>
  </div>
</template>

<script setup lang="ts">
  import { ref } from 'vue'
  import type { Ref } from 'vue'
  const num: Ref<number> = ref(1)
  function increment() {
    num.value++
  }
</script>
// spec | test
import { describe, it, expect } from 'vitest'
import { shallowMount } from '@vue/test-utils'
import AddNum from '@/views/AddNum.vue'

describe('組件單元測(cè)試', () => {
  it('test1', async () => {
    const wrapper = shallowMount(AddNum)
    const btn = '.test-utils-button'
    const value = '.test-utils-value'
    expect(wrapper.find(value).text()).toContain('值為:1')
    await wrapper.find(btn).trigger('click')
    expect(wrapper.find(value).text()).toBe('值為:2')
  })
})
  1. demo 由一個(gè)組件和測(cè)試文件組成
  2. 組件的邏輯非常簡(jiǎn)單,按下按鈕則數(shù)字+1,頁(yè)面顯示實(shí)時(shí)數(shù)字
  3. 測(cè)試代碼中使用 test-utils 庫(kù)的 shallowMount 方法淺渲染掛載組件(*:淺渲染只渲染當(dāng)前組件,不會(huì)渲染它的子組件,從而避免在測(cè)試中與子組件的行為產(chǎn)生干擾)
  • 組件通過(guò) find 方法返回查找元素,再通過(guò) text 方法返回元素的文本內(nèi)容
  • 然后使用 vitest 庫(kù)的 expect 創(chuàng)建斷言,toContain 是斷言檢查值是否在數(shù)組中,toBe 是斷言基礎(chǔ)對(duì)象是否相等
  • trigger 是 test-utils 中觸發(fā) DOM 事件的方法,demo 中觸發(fā)了點(diǎn)擊事件,模擬用戶按下了按鈕的操作,按下按鈕前后都斷言了,會(huì)判斷實(shí)際執(zhí)行結(jié)果與預(yù)期結(jié)果是否一致,如果不一致則會(huì)拋出錯(cuò)誤
  • 如將tobe('值為:2')改為tobe('值為:3'),就會(huì)提示哪一個(gè)測(cè)試文件中的哪一個(gè)測(cè)試用例失敗,并展示錯(cuò)誤的預(yù)期值和實(shí)際的執(zhí)行結(jié)果
- Expected   "值為:3"
+ Received   "值為:2"

tips

雖然這是一個(gè)非常簡(jiǎn)單 demo,但它還是有很多值得注意的知識(shí)點(diǎn)的

  • describe 可以在文件頂層直接使用testbench,它們會(huì)被收集為隱式套件的一部分,也可以用describe在當(dāng)前上下文定義一個(gè)新套件,作為一組相關(guān)的測(cè)試或嵌套套件
  • it ittest的別名,使用ittest都是可以的
  • shallowMount 按照文檔描述它是使用掛載組件的別名,所以也可以使用mount(Component, { shallow: true })來(lái)淺渲染掛載組件,shallow 的默認(rèn)值是 false
  • async/await 可以看到 trigger 前使用了 await,這與我們尋常使用 async/await 有一點(diǎn)細(xì)微的差別,假如我們?nèi)サ?async/await,測(cè)試用例將會(huì)失敗,因?yàn)榘粹o雖然按下了,值也自增了,但 vue 不會(huì)立即更新 DOM,而是等到下一個(gè)事件循環(huán)勾選之后再更新,所以斷言會(huì)在在 vue 更新之前被調(diào)用,拿到的實(shí)際執(zhí)行結(jié)果還是初始值 1,與預(yù)期值 2 不符,然后拋出錯(cuò)誤,這感覺(jué)是不是很熟悉,這不就像 Vue 的異步更新策略導(dǎo)致我們對(duì)數(shù)據(jù)的修改不會(huì)立馬體現(xiàn)到頁(yè)面變化上,此時(shí)如果想要立即獲取更新后的 dom 的狀態(tài),我們就需要使用到…對(duì),沒(méi)錯(cuò)就是我們的老朋友nexttick()
import { nextTick } from 'vue'

it('test1', async () => {
  const wrapper = shallowMount(AddNum)
  const btn = '.test-utils-button'
  const value = '.test-utils-value'
  expect(wrapper.find(value).text()).toContain('值為:1')
  wrapper.find(btn).trigger('click')
  await nexttick()
  expect(wrapper.find(value).text()).toBe('值為:2')
})

因?yàn)檫@是很常見(jiàn)的一個(gè)問(wèn)題,test-utils提供了一個(gè)快捷方式,可以直接在await后跟觸發(fā)DOM的事件,省略掉nexttick(),即await wrapper.find(btn).trigger('click'),如此一來(lái)我們斷言的實(shí)際結(jié)果就是自增過(guò)后的數(shù)字,與預(yù)期結(jié)果相符,測(cè)試用例通過(guò)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-840457.html

到了這里,關(guān)于vitest單元測(cè)試配合@vue/test-utils之組件單元測(cè)試篇的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Vue前端自動(dòng)化測(cè)試-Vue Test Utils

    Vue前端自動(dòng)化測(cè)試-Vue Test Utils

    vue-test-utils是vue官方的單元測(cè)試框架,提供了一系列非常方便的工具,使我們更輕松地為vue構(gòu)建的應(yīng)用來(lái)編寫單元測(cè)試。主流的JavaScript測(cè)試運(yùn)行器有很多,但vue-test-utils都能支持。它是與測(cè)試運(yùn)行器無(wú)關(guān)的。 通過(guò)腳手架 vue-cli 來(lái)新建項(xiàng)目的時(shí)候,如果選擇了 Unit Testing 單元測(cè)

    2024年02月13日
    瀏覽(20)
  • 前端自動(dòng)化測(cè)試(二)Vue Test Utils + Jest

    前端自動(dòng)化測(cè)試(二)Vue Test Utils + Jest

    項(xiàng)目會(huì)從快速迭代走向以維護(hù)為主的狀態(tài),因此引入自動(dòng)化測(cè)試能有效減少人工維成本 。 自動(dòng)化的收益 = 迭代次數(shù) * 全手動(dòng)執(zhí)行成本 - 首次自動(dòng)化成本 - 維護(hù)次數(shù) * 維護(hù)成本 對(duì)于自動(dòng)化測(cè)試,相對(duì)于發(fā)現(xiàn)未知問(wèn)題,更傾向于避免可能的問(wèn)題。 (1) 單元測(cè)試 單元測(cè)試(unit t

    2024年02月08日
    瀏覽(49)
  • Vitest 單元測(cè)試

    Vitest 單元測(cè)試

    自動(dòng)化測(cè)試是指 使用獨(dú)立于待測(cè)軟件的其他軟件或程序來(lái)自動(dòng)執(zhí)行測(cè)試,比較實(shí)際結(jié)果與預(yù)期 并生成測(cè)試報(bào)告這一過(guò)程。在測(cè)試流程已經(jīng)確定后,測(cè)試自動(dòng)化可以自動(dòng)執(zhí)行的一些重復(fù)性但必要的測(cè)試工作。也可以完成手動(dòng)測(cè)試幾乎不可能完成的測(cè)試。 1. 基于圖形用戶交互界

    2024年01月21日
    瀏覽(17)
  • Vitest 單元測(cè)試方案

    Vitest 單元測(cè)試方案

    ??? 交流討論: 歡迎加入我們一起學(xué)習(xí)! ?? 資源分享 : 耗時(shí)200+小時(shí)精選的「軟件測(cè)試」資料包 ??? 教程推薦: 火遍全網(wǎng)的《軟件測(cè)試》教程?? ?? 歡迎點(diǎn)贊 ?? 收藏 ?留言 ?? 如有錯(cuò)誤敬請(qǐng)指正! 簡(jiǎn)介 Vitest 是一個(gè)面向 Vite 的極快的 單元測(cè)試 框架。它利用了 Vite 的

    2024年04月08日
    瀏覽(18)
  • Vitest 單元測(cè)試詳解

    Vitest 單元測(cè)試詳解

    一、 自動(dòng)化測(cè)試 (TDD)的一些概念: 自動(dòng)化測(cè)試(TDD)概念: 自動(dòng)化測(cè)試是指 使用獨(dú)立于待測(cè)軟件的其他軟件或程序來(lái)自動(dòng)執(zhí)行測(cè)試,比較實(shí)際結(jié)果與預(yù)期 并生成測(cè)試報(bào)告這一過(guò)程。在測(cè)試流程已經(jīng)確定后,測(cè)試自動(dòng)化可以自動(dòng)執(zhí)行的一些重復(fù)性但必要的測(cè)試工作。也可

    2024年02月20日
    瀏覽(16)
  • 年輕人的第一款單元測(cè)試框架———vitest

    年輕人的第一款單元測(cè)試框架———vitest

    一款合格的開源項(xiàng)目是避免不了單元測(cè)試的,這也是這幾年單元測(cè)試的熱度居高不下的原因。而在今年的 state of js 2022 中,我們可以看見(jiàn)在 代碼庫(kù)層級(jí)列表 中, vitest 飛升一躍,直接到了第二名,僅次于同門師兄弟 vite ,而 element plus unocss 等知名開源項(xiàng)目都采用了vitest進(jìn)行單

    2024年01月17日
    瀏覽(18)
  • 【vitest 單元測(cè)試】如何蹭 ant-design-web3 的PR

    【vitest 單元測(cè)試】如何蹭 ant-design-web3 的PR

    這篇文章分享單測(cè)經(jīng)驗(yàn),希望你能收獲到有用的單測(cè)知識(shí)或者pr思路,填補(bǔ)單測(cè)的過(guò)程可以深刻理解組件內(nèi)部的每一個(gè)流程,相信一定有所收獲。 最近剛好在做一些單測(cè)覆蓋的工作,在排查執(zhí)行不到的地方的過(guò)程,可以梳理整個(gè)組件執(zhí)行的脈絡(luò),甚至發(fā)現(xiàn)一些可以優(yōu)化組件的

    2024年01月16日
    瀏覽(26)
  • GO——單元測(cè)試(test)

    go test用來(lái)做什么 做單元測(cè)試,測(cè)試函數(shù)是否符合預(yù)期 go test在哪個(gè)包 testing 如何使用 參考: https://geektutu.com/post/quick-go-test.html 以 my_func.go 中的Add方法為例 在同一個(gè)文件夾下添加my_func_test.go文件 測(cè)試文件以_test.go為結(jié)尾 里面的測(cè)試方法以Test開頭,但是不一定是要跟方法名,

    2024年01月20日
    瀏覽(29)
  • vue-cli5腳手架搭建項(xiàng)目過(guò)程詳解 -vue組件單元測(cè)試

    vue-cli5腳手架搭建項(xiàng)目過(guò)程詳解 -vue組件單元測(cè)試

    單元測(cè)試是對(duì)軟件中的最小可測(cè)試單元進(jìn)行測(cè)試。(最小可測(cè)試單元是要有結(jié)果產(chǎn)出的。例如某個(gè)方法,單獨(dú)的某個(gè)操作) 單元測(cè)試其實(shí)是伴隨著敏捷開發(fā),它是對(duì)更快開發(fā)的一種追求。早發(fā)現(xiàn)錯(cuò)誤比晚發(fā)現(xiàn)錯(cuò)誤會(huì)更好,保證自己的代碼符合要求 一: 搭建基于 jest 的 vue 單元

    2023年04月14日
    瀏覽(439)
  • 仿真與測(cè)試:?jiǎn)卧獪y(cè)試與Test Harness

    仿真與測(cè)試:?jiǎn)卧獪y(cè)試與Test Harness

    本文描述單元測(cè)試的概念,以及Test Harness建立的方法和簡(jiǎn)單的單元測(cè)試過(guò)程。 單元測(cè)試,簡(jiǎn)單來(lái)說(shuō)就是在Simulink模型中只測(cè)試一小部分單元的功能。關(guān)于單元測(cè)試的概念網(wǎng)上有很多資料了,這里不再贅述。博主從實(shí)際工作經(jīng)驗(yàn)的角度來(lái)談?wù)剢卧獪y(cè)試的價(jià)值。 舉個(gè)簡(jiǎn)單的例子,

    2024年02月04日
    瀏覽(83)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包