【vitest 单元测试】如何蹭 ant-design-web3 的PR

这篇文章分享单测经验,希望你能收获到有用的单测知识或者pr思路,填补单测的过程可以深刻理解组件内部的每一个流程,相信一定有所收获。

ant-design-web3

前言

  • 最近刚好在做一些单测覆盖的工作,在排查执行不到的地方的过程,可以梳理整个组件执行的脉络,甚至发现一些可以优化组件的地方。

  • 正常我们写完一个组件之后应该根据预期的执行来写好单测,这样的话如果后面有其他人动了逻辑,pr的时候ci就会进行单测,然后指出报错的地方。我的第一个单测试从下图中最下面的第一个开始的,当时修了一个issue中的bug,然后需要对应去补充一些单测。

  • 通过render渲染组件,也可以用react的hook 或者vi.mock去模拟一些事件,点击事件的话可以用fireEvent来模拟。

    import React, { useEffect } from 'react';
    import { fireEvent, render } from '@testing-library/react';
    import { describe, expect, it, vi } from 'vitest';

查看单测覆盖情况

运行命令,本地会生成一份临时目录

复制代码
pnpm run test:coverage

通过live server打开html即可

点开具体文件地址,可以查看文件覆盖的行数

发现有红的,我们就可以写单测去完善优化它。

开发场景的经验

只执行某个文件的test

响应式场景

modal 在尺寸过于小的时候,会触发其他的模式,可能页面显示上会有点不一样

复制代码
    vi.spyOn(Grid, 'useBreakpoint').mockReturnValue({
      md: true, // ≥ 768px, mock PC
    });

查看dom

通过 console.log(baseElement.outerHTML);直接输出整个dom的结构

modal关闭

复制代码
    fireEvent.click(baseElement.querySelector('.ant-modal-close')!);

    await vi.waitFor(() => {
      expect(
        baseElement.querySelector('.ant-web3-connect-button-profile-modal')?.className,
      ).toContain('ant-zoom-leave');
    });
相关推荐
sanjiaomao3334 小时前
从论文公式到Python实现:用单元测试校验滑动平均算法
python·算法·单元测试
Richown1 天前
React 高级模式:并发渲染下的状态机驱动架构——从 Finite State Machine 到生产级实现
区块链·react
LayZhangStrive2 天前
Agent开发 - 实现人类与Manus智能体的终端窗口命令交互
ai·交互·agent·react·终端·manus
梁辰兴3 天前
软件工程:单元测试
单元测试·软件工程·梁辰兴·‘设计原则·方法技术·tdd驱动·mock隔离
名字还没想好☜3 天前
React 实现暗黑模式切换:localStorage 持久化、SSR 首屏闪烁与跟随系统主题
前端·javascript·react.js·ecmascript·react·next.js
磐链科技3 天前
交易所开发核心:钱包提现引擎的设计——从风控拦截、多级审批到自动广播上链
web3·区块链
磐链科技5 天前
Web3钱包开发中的交易风控体系:模拟执行、沙盒隔离与授权拦截
web3·区块链
2601_962299886 天前
python脚本如何单元测试
python·单元测试·pytest·unittest·mock对象
牛油果子哥q7 天前
C++大型项目工程精讲:CMake完整实战、静态库&动态库、模块化拆分、单元测试、gdb调试、性能工具、工程踩坑全解
开发语言·c++·单元测试
磐链科技7 天前
Web3钱包开发扩展比特币生态:BRC20与Runes协议的集成实践
web3