当前位置: 首页 > article >正文

单元测试学习笔记

单元测试是软件测试的基础层级,主要针对代码的最小可测试单元进行验证。单元测试可以帮助快速定位问题边界,提升代码可维护性,支持安全的重构操作。

测试对象:

  • 独立函数/方法
  • 纯工具类(如数据处理函数)
  • UI组件(不依赖外部环境的独立组件)
  • 自定义Hooks(React场景)
工具类型推荐方案特点
测试框架Jest/Vitest零配置、快照测试
DOM测试库Testing Library用户行为导向的组件测试
覆盖率统计Istanbul/NYC可视化报告生成
Mock解决方案Jest.fn + MSW网络请求/定时器模拟

demo:

// 工具函数
export const formatPrice = (num) => {
  if (typeof num !== 'number') return '0.00'
  return num.toFixed(2).replace(/\B(?=(\d{3})+(?!\d))/g, ',')
}

// 测试用例
test('格式化金额显示', () => {
  expect(formatPrice(1234.56)).toBe('1,234.56')
  expect(formatPrice(null)).toBe('0.00')      // 边界值测试
  expect(formatPrice('invalid')).toBe('0.00') // 异常输入处理
})
 

// React组件测试

import { render, screen } from '@testing-library/react'

test('显示加载状态', () => {
  render(<LoadingSpinner visible={true} />)
  expect(screen.getByRole('status')).toBeInTheDocument()
  expect(screen.queryByText('Loading...')).not.toBeNull()
})

test('隐藏加载状态', () => {
  render(<LoadingSpinner visible={false} />)
  expect(screen.queryByRole('status')).toBeNull()
})
 

// vue组合式api测试

import { useCounter } from './counter'
import { ref } from 'vue'

test('计数器功能', () => {
  const { count, increment } = useCounter(ref(5))
  
  expect(count.value).toBe(5)
  increment()
  expect(count.value).toBe(6)
})
 

http://www.lryc.cn/news/2386404.html

相关文章:

  • 多模态大语言模型arxiv论文略读(九十)
  • (1-6-1)Java 集合
  • spring5-配外部文件-spEL-工厂bean-FactoryBean-注解配bean
  • [安全清单] Linux 服务器安全基线:一份可以照着做的加固 Checklist
  • 企业级单元测试流程
  • 安卓开发用到的设计模式(2)结构型模式
  • JavaWeb:SpringBoot配置优先级详解
  • 故障率预测:基于LSTM的GPU集群硬件健康监测系统(附Prometheus监控模板)
  • 【b站计算机拓荒者】【2025】微信小程序开发教程 - chapter3 项目实践 -1 项目功能描述
  • FFmpeg 安装包全攻略:gpl、lgpl、shared、master 区别详解
  • AI浪潮下,媒体内容运营的五重变奏
  • WindTerm 以 SSH 协议的方式通过安恒明御堡垒机间接访问服务器
  • 通过现代数学语言重构《道德经》核心概念体系,形成一个兼具形式化与启发性的理论框架
  • 邂逅Node.js
  • 计算机视觉(图像算法工程师)学习路线
  • GITLIbCICD流水线搭建
  • 详细介绍Qwen3技术报告中提到的模型架构技术
  • 【慧游鲁博】【8】前后端用户信息管理:用户基本信息在小程序端的持久化与随时获取
  • 上位机知识篇---keil IDE操作
  • Odoo: Owl Hooks 深度解析技术指南
  • SpringBoot返回xml
  • 【案例篇】 实现简单SSM工程-后端
  • 零基础学习计算机网络编程----网络基本知识
  • Zynq和Microblaze的区别和优势
  • FastAPI 支持文件下载
  • CNN卷积神经网络到底卷了啥?
  • vue中v-clock指令
  • MIT 6.S081 2020Lab5 lazy page allocation 个人全流程
  • C++初阶-list的使用2
  • PHP序列化数据格式详解