国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

在Vue項目中使用snapshot測試的具體使用

2024-05-06 15:40:31
字體:
來源:轉載
供稿:網友

snapshot介紹

snapshot測試又稱快照測試,可以直觀地反映出組件UI是否發生了未預見到的變化。snapshot如字面上所示,直觀描述出組件的樣子。通過對比前后的快照,可以很快找出UI的變化之處。

第一次運行快照測試時會生成一個快照文件。之后每次執行測試的時候,會生成一個快照,然后對比最初生成的快照文件,如果沒有發生改變,則通過測試。否則測試不通過,同時會輸出結果,對比不匹配的地方。

jest中的快照文件以為snap拓展名結尾,格式如下(ps: 在沒有了解之前,我還以為是快照文件是截圖)。一個快照文件中可以包含多個快照,快照的格式其實是HTML字符串,對于UI組件,其HTML會反映出其內部的state。每次測試只需要對比字符串是否符合初始快照即可。

exports[`button 1`] = `"<div><span class=//"count//">1</span> <button>Increment</button> <button class=//"desc//">Descrement</button> <button class=//"custom//">not emitted</button></div>"`;

snapshot測試不通過的原因有兩個。一個原因是組件發生了未曾預見的變化,此時應檢查代碼。另一個原因是組件更新而快照文件并沒有更新,此時要運行jest -u更新快照。

› 1 snapshot failed from 1 test suite. Inspect your code changes or re-run jest with -u to update them.

結合Vue進行snapshot測試

生成快照時需要渲染并掛載組件,在Vue中可以使用官方的單元測試實用工具Vue Test Utils。

Vue Test Utils 提供了mount、shallowMount這兩個方法,用于創建一個包含被掛載和渲染的 Vue 組件的 Wrapper。component是一個vue組件,options是實例化Vue時的配置,包括掛載選項和其他選項(非掛載選項,會將它們通過extend覆寫到其組件選項),結果返回一個包括了一個掛載組件或 vnode,以及測試該組件或 vnode 的方法的Wrapper實例。

mount(component:{Component}, options:{Object})

shallowMount與mount不同的是被存根的子組件,詳細請戳文檔。

Wrapper上的豐富的屬性和方法,足以應付本文中的測試需求。html()方法返回Wrapper DOM 節點的 HTML 字符串。find()和findAll()可以查找Wrapper里的DOM節點或Vue組件,可用于查找監聽事件的元素。trigger可以在DOM節點/組件上觸發一個事件。

結合上述的方法,我們可以完成一個模擬事件觸發的快照測試。

細心的讀者可能會發現,我們平時在使用Vue時,數據更新后視圖并不會立即更新,需要在nextTick回調中處理更新完成后的任務。但在 Vue Test Utils 中,為簡化用法,更新是同步的,所以無需在測試中使用 Vue.nextTick 來等待 DOM 更新。

demo演示

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 澄迈县| 荣成市| 祁东县| 井陉县| 屯门区| 岢岚县| 开平市| 琼中| 双流县| 武夷山市| 措美县| 交口县| 茶陵县| 广州市| 泾源县| 桑日县| 梁山县| 图们市| 佛学| 淮滨县| 正阳县| 盐池县| 眉山市| 宜春市| 濮阳市| 城步| 鹤岗市| 南昌县| 九寨沟县| 汝南县| 吴江市| 密山市| 舒兰市| 鱼台县| 三台县| 蓬莱市| 平陆县| 将乐县| 揭西县| 涞源县| 睢宁县|