单元测试学习笔记

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

测试对象:

  • 独立函数/方法
  • 纯工具类(如数据处理函数)
  • 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)

})

相关推荐
kyriewen1 天前
前端测试:别为了100%覆盖率而写测试,那是自欺欺人
前端·javascript·单元测试
小短腿的代码世界1 天前
Qt券商接口封装深度解析:统一API设计与多源适配
开发语言·qt·单元测试
小短腿的代码世界2 天前
Qt WebEngine深度解析:Chromium多进程架构与Qt信号槽的双向融合
qt·搜索引擎·单元测试
晓晓hh3 天前
JavaWeb学习——JUnit和日志
学习·junit·单元测试
测试员周周3 天前
【AI测试系统】第1篇:LangGraph 实战:用 State Graph 搭建 AI测试流水线(4 步编排 + RAG 增强 + 完整代码)
linux·windows·python·功能测试·microsoft·单元测试·多轮对话
汽车仪器仪表相关领域4 天前
Kvaser Memorator Light HS v2:单通道 CAN FD 便携记录仪,即插即用的故障诊断利器
运维·服务器·数据库·人工智能·功能测试·单元测试
QH139292318805 天前
Rohde & Schwarz FSWX3044 FSWX3026信号与频谱分析仪
网络·功能测试·单元测试·集成测试·模块测试
川石课堂软件测试5 天前
AI如何赋能软件测试行业的发展
人工智能·python·功能测试·网络协议·单元测试·测试用例·prometheus