vitest | 測試框架vitest | 總結筆記

目錄

測試框架 vitest 介紹

測試文件的寫法

文件取名:文件名中要有 test,即??xxx.test.ts?

引入庫:

test 測試:

測試運行:?npx test 文件名?,每次保存后會重新運行。

★ expect 方法:

vi 模擬相關的方法

第三方庫的測試實現

目的:測試 request 函數,模擬 get 請求的對應返回,期待返回的數據能夠正常出現。

?問題:在測試文件中,引入 request,模擬 vi.mock('axios')? 發現?axios.get 方法上 只有幾個方法——》即 axios 會缺失對應的方法

?解決:使用斷言 const mockedAxios = axios as Mocked (注:mockedAxios 可以獲取一個對應的類型,Mocked 是 vitest 上的)

寫測試用例

mount?將組件掛載

★ mount 方法:?

報錯:ReferenceError: document is not defined.

??解決:需要自己配置,讓其支持dom環境。

測試事件:


測試框架 vitest 介紹

網址:Vitest | Next Generation testing framework

特點:①支持vite的生態系統,②兼容jest語法 ③HMR測試(速度快) ④ ESM(js的原生支持)

安裝 Vitest?npm install -D vitest?

斷言:查看框架是否符合預期的結果。chaijs、should、expect、assert


測試文件的寫法

文件取名:文件名中要有 test,即??xxx.test.ts?

??每個 case 測試一個功能點

引入庫:

expect 斷言庫、test 測試用例:?import { export, test } from 'vitest'?

describe分組:?import { describe } from 'vitest'?

vi 模擬?import { describe } from 'vitest'?

Mocked +斷言--》可以獲取一個對應的類型?import { Mocked } from 'vitest'?

test 測試:

test('測試名', () => {

??expect().toBe() ...

})

測試運行:?npx test 文件名?,每次保存后會重新運行。

expect 方法:

????expect().toBe():兩個嚴格相等(相當于===)

????.toEqual():比里頭的值是否相等(相當于==)

????.toBeTruthy() 是真,.toBeFalsy() 是假

????expect(a).toBeGreaterThan(b):a比b大

????.toBeLessThan():比小

調用情況:

expect().toHaveBeenCalled() ,被調用過的

expect().toHaveBeenCalledWith(參數),期待被調用成xx參數

expect().toHaveBeenCalledTimes(次數),調用了幾次

expect().toHaveProperty('')??是否有xx屬性

expect().toBeDefined()? 是否存在

vi 模擬相關的方法

vi.fn() 回調函數

vi.synOn(對象, '方法名')

vi.mock('模擬的第三方庫同名')


第三方庫的測試實現

目的:測試 request 函數,模擬 get 請求的對應返回,期待返回的數據能夠正常出現。

?寫被測試的對象:發送一個請求,傳入一個假的 url 。模擬get的實現,確定一個返回值 data,

?問題:在測試文件中,引入 request,模擬 vi.mock('axios')? 發現?axios.get 方法上 只有幾個方法——》即 axios 會缺失對應的方法

?

?解決:使用斷言 const mockedAxios = axios as Mocked<typeof axios> (注:mockedAxios 可以獲取一個對應的類型,Mocked 是 vitest 上的

此時,在?.上面就不是原來的方法,而是?mockedAxios?之后得到的功能。一系列的方法,可完成對應的實現。?

?mockImplementation 手動寫其實現。

快捷方法—— .get.mockResolveValue({data: 123})

.get.mockImplementation( () => Primise.resolve( {data: 123} )

??等價于

?? .get.mockResolveValue({data: 123})


寫測試用例

目的: 將組件掛載到一個地方,測試它長啥樣,是否符合我們傳入的屬性。

mount?將組件掛載

??引入:import { mount } from '@vue/test-utils'

??語法:mount(?組件,{ 要傳入的具體內容 }?)

★ mount 方法:?

mount().classes()??獲取dom節點上的class

如何遍歷:① mount().get('') 找不到,會測試中斷; ②mount().find??找不到 不會中斷。

取信息:① mount().get().html() html; ② mount().get().text()文本結構

mount().get().trigger('觸發的事件名') 觸發xx

mount().emitted()??顯示當前所有觸發的事件名稱。

mount().attributes('屬性')? 對應節點的屬性

mount().find('').element() 獲取真正的dom節點

mount().find('').element().屬性 獲取真正的dom節點的某一個屬性

.html(),供測試使用。

例子:


報錯:ReferenceError: document is not defined.

?問題:需要掛載節點,就需要一個dom環境vitest 默認環境在 node下,而node 環境沒有對應的 dom 環境。

??解決:需要自己配置,讓其支持dom環境。

????如何配置?vitest。默認會讀取 vite.config.ts,需要重載,即?新建一個 vitest.config.ts?文件

首行添加:???????///<reference types="vitest" /> 定義重載

???????將對應的配置文件 vite.config.ts 拷貝到vitest.config.ts。將不必要的刪掉,如 刪掉 eslint()、resolve的路徑問題。

??????test 里頭添加:

????????全局打開??globals: true

????????環境??environment:'jsdom'?,打開dom環境

??????運行 npx vitest Button,(其中 Button 為文件名)查看結果?

測試事件:

?觸發 click,MouseEvent 原生的事件

?測試disabled:以及其點擊事件出發情況。


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/81317.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/81317.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/81317.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ESP32開發-作為TCP客戶端發送數據到網絡調試助手

??代碼&#xff08;作為TCP客戶端&#xff09;?? #include <SPI.h> #include <EthernetENC.h> // 使用EthernetENC庫// 網絡配置 byte mac[] {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // MAC地址 IPAddress ip(192, 168, 1, 100); // ESP32的IP IPAddr…

HTML5 WebSocket:實現高效實時通訊

一、引言 在當今的 Web 開發領域,實時通訊功能變得越來越重要。例如在線聊天、實時數據更新等場景都需要客戶端與服務器之間能夠進行高效的雙向數據傳輸。HTML5 引入的 WebSocket 協議為我們提供了一種強大的解決方案,它在單個 TCP 連接上實現了全雙工通訊,極大地改善了傳統…

速通Ollama本地部署DeepSeek-r1

下載 Ollama 前往 Ollama官網 下載客戶端&#xff0c;下載完成后點擊Install安裝即可。 完成后會自動安裝在C:盤的AppData文件夾下&#xff0c;命令行輸入ollama后&#xff0c;顯示下圖中的信息表明安裝成功。 下載模型 在官網界面點擊 DeepSeek-R1 超鏈接 跳轉到DeepSeek安裝…

總結C++中的STL

1.STL 概述 STL 即標準模板庫&#xff0c;是 C 標準程序庫的重要組成部分&#xff0c;包含常用數據結構和算法&#xff0c;體現了泛型化程序設計思想&#xff0c;基于模板實現&#xff0c;提高了代碼的可復用性 2.容器 2.1 序列容器&#xff1a; 1. vector 特性&#xff…

自動駕駛-一位從業兩年的獨特視角

時間簡介 2023.03 作為一名大三學生&#xff0c;加入到某量產車企&#xff0c;從事地圖匹配研發 2023.07 地圖匹配項目交付&#xff0c;參與離線云端建圖研發 2023.10 拿到24屆校招offer 2024.07 正式入職 2025.01 離線云端建圖穩定&#xff0c;開始接觸在線車端融圖研發 自動…

《軟件設計師》復習筆記(11.1)——生命周期、CMM、開發模型

目錄 一、信息系統生命周期 系統規劃階段 系統分析階段&#xff08;邏輯設計&#xff09; 系統設計階段&#xff08;物理設計&#xff09; 系統實施階段 系統運行與維護階段 二、能力成熟度模型&#xff08;CMM/CMMI&#xff09; CMM 五級模型 CMMI 兩種表示方法 真題…

1.67g 雨晨 22635.5305 Windows 11 企業版 23H2 極速增強版

五一特別制作 &#xff08;主要更新簡述&#xff09; 全程由最新YCDISM2025裝載制作 1、可選功能&#xff1a; 添加&#xff1a; Microsoft-Windows-LanguageFeatures-Basic-en-us-Package Microsoft-Windows-LanguageFeatures-OCR-en-us-Package 2、功能增強&a…

爬蟲逆向思維

爬蟲逆向思維是指從目標網站的反爬機制入手&#xff0c;通過分析其防護邏輯來突破限制&#xff0c;獲取數據的思路。以下是核心要點&#xff1a; 核心方向 - 分析反爬手段&#xff1a;如請求頭校驗、IP封禁、驗證碼、動態數據加密等。 - 模擬真實行為&#xff1a;偽造瀏覽器指…

手撕哈希表

引入&#xff1a;unordered_set /map是什么&#xff1f; 庫里面除開set和map&#xff0c;還有unordered_set 和 unordered_map&#xff0c;區別在于&#xff1a; ①&#xff1a;set和map的底層結構是紅黑樹&#xff0c;而unordered_set和unordered_map的底層是哈希表 ②&…

基于Docker的內網穿透實戰:frp 0.68 + Nginx最佳實踐

在實際應用中&#xff0c;我們常常遇到這樣的需求&#xff1a; 家里的NAS服務器、開發環境、測試服務&#xff0c;需要暴露到公網訪問 企業內部系統&#xff0c;僅允許在特定域名或端口暴露&#xff0c;但沒有公網IP 多個內網應用&#xff0c;希望通過一個統一的外網入口訪問…

完美中國制度流程體系建設(70頁PPT)(文末有下載方式)

資料解讀&#xff1a;《完美中國制度流程體系建設》 詳細資料請看本解讀文章的最后內容。 該文檔圍繞完美中國制度流程體系建設展開&#xff0c;從風險管理流程等前期工作切入&#xff0c;全面剖析企業制度流程體系框架&#xff0c;結合案例指出常見問題&#xff0c;評估完美公…

計算機組成原理實驗(5) 堆棧寄存器實驗

實驗五 堆棧寄存器實驗 一、實驗目的 1、熟悉堆棧概念 2、熟悉堆棧寄存器的組成和硬件電路 二、實驗要求 按照實驗步驟完成實驗項目&#xff0c;對4個堆棧寄存器進行讀出、寫入數據操作。 三、實驗說明 3.1 堆棧寄存器組實驗構成&#xff08;圖3-1&#xff09; 本系統…

RAGFlow報錯:ESConnection.sql got exception

環境&#xff1a; Ragflowv0.17.2 問題描述&#xff1a; RAGFlow報錯&#xff1a;ESConnection.sql got exception _ming_cheng_tks, 浙江, operatorOR;minimum_should_match30%) 2025-04-25 15:55:06,862 INFO 244867 POST http://localhost:1200/_sql?formatjson […

鼠標滾動字體縮放

在VsCode中編輯文件時&#xff0c;有時候發現Ctrl鼠標滾輪并不能縮放字體&#xff0c;下面是啟用這個功能的方法。 第一步&#xff1a; 進入設置&#xff0c;可以從左下角按鈕菜單進入&#xff0c;也可以使用【Ctrl,】。 第二步&#xff1a; 啟用鼠標滾輪縮放功能 第三步&…

深度學習·經典模型·VisionTransformer

VIT embedding處理與標準的Transformer不同&#xff0c;其他基本一致 E&#xff4d;bedding Graph: ( H , W , C ) (H,W,C) (H,W,C) Patch: ( N , P 2 C ) (N,P^2C) (N,P2C),其中 N H ? W P 2 N\frac{H*W}{P^2} NP2H?W?, P P P是patch的大小 注意的是,論文了保留與Bert的…

Python Selenium 完全指南:從入門到精通

Python Selenium 完全指南&#xff1a;從入門到精通 &#x1f4da; 目錄 環境準備與基礎入門元素定位與交互操作等待機制與異常處理面向對象封裝與框架設計進階技巧與最佳實踐性能優化與調試技巧實戰案例分析 環境準備與基礎入門 1. 安裝 Selenium 與瀏覽器驅動 安裝 Selen…

基于ffmpeg的音視頻編碼

1 音頻編碼 本質上是由pcm文件轉到一個協議文件 比如說aac協議 1.1 音頻基本知識回歸 比特率 比特率是指單位時間內傳輸或處理的比特&#xff08;bit&#xff09;數量&#xff0c;通常用 bps&#xff08;bits per second&#xff0c;比特每秒&#xff09;來表示。它是衡量數…

BT137-ASEMI機器人功率器件專用BT137

編輯&#xff1a;LL BT137-ASEMI機器人功率器件專用BT137 型號&#xff1a;BT137 品牌&#xff1a;ASEMI 封裝&#xff1a;TO-220F 批號&#xff1a;最新 引腳數量&#xff1a;3 封裝尺寸&#xff1a;如圖 特性&#xff1a;雙向可控硅 工作結溫&#xff1a;-40℃~150℃…

攻防世界 dice_game

dice_game ??????dice_game (1) motalymotaly-VMware-Virtual-Platform:~/桌面$ file game game: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]254…

Astral Ascent 星界戰士(星座上升) [DLC 解鎖] [Steam] [Windows SteamOS macOS]

Astral Ascent 星界戰士&#xff08;星座上升&#xff09; [DLC 解鎖] [Steam] [Windows & SteamOS & macOS] 需要有游戲正版基礎本體&#xff0c;安裝路徑不能帶有中文&#xff0c;或其它非常規拉丁字符&#xff1b; DLC 版本 至最新全部 DLC 后續可能無法及時更新文章…