如何使用 Vitest 在前端项目中做单元测试 TDD

简介: 如何使用 Vitest 在前端项目中做单元测试 TDD

e5ab779c2edf16463f282d485df9f7a.png

前言

关于前端单元测试,说实话,大部分中小公司在实际项目开发中并不会使用到,但是我还是希望大家能有一个意识,就是 你可以不用,但是不能不懂 ,这对于你了解整个测试体系,和如何保障项目项目质量,乃至当你作为一个 leader 时如何去把控项目中潜在的风险极为重要,本篇就带着大家一起,从了解各种测试概念开始,到如何使用 Vitest 写单元测试,来让你对什么是TDD有个最基本的认识

测试的分类

单元测试

单元测试主要测试单元是否符合“设计”

集成测试

集成测试既验证“设计”,又验证“需求”

系统测试

系统测试主要测试系统是否符合“需求规格说明书"

TDD

TDD: Test-driven development (测试驱动开发,先写测试用例在开发)

优点

  1. 长期减少回归bug
  2. 代码质量更好
  3. 测试覆盖率高
  4. 错误的测试代码不容易出现

缺点

  1. 代码量大
  2. 耦合度高
  3. 过于独立

TDD 的开发流程

  1. 编写测试用例
  2. 运行测试用例,用例不通过
  3. 编写代码,使用例通过测试
  4. 优化代码,完成开发
  5. 重复上述流程

简单介绍完 TDD ,我们来一起了解下 Vitest

关于 Vitest

Vitest 是一个相对较新的、以 Vite 为基础的单元测试框架。Vitest 旨在将自己定位为 Vite 项目的首选测试框架,当然,即使对于不使用 Vite 的项目也是一个可靠的替代方案

官网 Vitest | 由 Vite 提供支持的极速单元测试框架

安装与使用

npm install -D vitest
复制代码

package.json添加命令

"scripts": {
    "dev": "vite",
    "build": "vite build",
    "preview": "vite preview",
    "test": "vitest"
}
复制代码

执行

npm run test
复制代码

执行这个命令时,会自动查找我们项目中的 [name].test.js 或者 [name].spec.js 的文件,此时由于我们还没有编写用例,项目会报错,没关系,我们马上来编写测试代码

编写单元测试

  • 新建 test 文件目录和测试文件,这里我们来简单测试一下加法

27dbb8d8f2374806c5a658229488833.png

  • add1.spec.js
import { expect, test } from 'vitest'
function add(a, b) {
    return a + b
}
test('加法1', () => {
    expect(add(1, 1)).toEqual(2) // 测试 1 + 1 = 2
})
复制代码
  • add2.test.js
import { expect, test } from 'vitest'
function add(a, b) {
    return a + b
}
test('加法2', () => {
    expect(add(1, 1)).toEqual(1) // 测试 1 + 1 = 1
})
复制代码
  • 这时我们在执行下 npm run test

4cc881b49e1c1225a923dfc3b41351f.png

这时控制台会报用例不通过,这时我们把用例2的 toEqual 改为 1 + 1 = 2,保存一下

c13ae75ad4044e83273c22b2d4622af.png

这时用例就通过啦,到此,我们就完成了一个简单的单元测试编写,相信你对测试驱动开发也有一定的了解了,下一篇,我们在对 Vitest 中各种验证方法做详细讲解,敬请期待 ^-^

相关文章
|
1月前
|
前端开发 JavaScript 测试技术
前端测试技术中,如何提高集成测试的效率?
前端测试技术中,如何提高集成测试的效率?
|
1月前
|
监控 前端开发 数据可视化
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
@icraft/player-react 是 iCraft Editor 推出的 React 组件库,旨在简化3D数字孪生场景的前端集成。它支持零配置快速接入、自定义插件、丰富的事件和方法、动画控制及实时数据接入,帮助开发者轻松实现3D场景与React项目的无缝融合。
118 8
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
|
26天前
|
前端开发 JavaScript 测试技术
前端自动化测试
前端自动化测试是通过使用工具和脚本自动执行测试用例的过程,旨在提高测试效率、减少人为错误,并确保Web应用的功能在不同环境和设备上的一致性与稳定性。
|
2月前
|
JavaScript 前端开发 Docker
前端全栈之路Deno篇(二):几行代码打包后接近100M?别慌,带你掌握Deno2.0的安装到项目构建全流程、剖析构建物并了解其好处
在使用 Deno 构建项目时,生成的可执行文件体积较大,通常接近 100 MB,而 Node.js 构建的项目体积则要小得多。这是由于 Deno 包含了完整的 V8 引擎和运行时,使其能够在目标设备上独立运行,无需额外安装依赖。尽管体积较大,但 Deno 提供了更好的安全性和部署便利性。通过裁剪功能、使用压缩工具等方法,可以优化可执行文件的体积。
155 3
前端全栈之路Deno篇(二):几行代码打包后接近100M?别慌,带你掌握Deno2.0的安装到项目构建全流程、剖析构建物并了解其好处
|
1月前
|
前端开发 测试技术
前端工程化的分支策略要如何与项目的具体情况相结合?
前端工程化的分支策略要紧密结合项目的实际情况,以实现高效的开发、稳定的版本控制和顺利的发布流程。
28 1
|
1月前
|
前端开发 JavaScript 测试技术
前端小白逆袭之路:如何快速掌握前端测试技术,确保代码质量无忧!
【10月更文挑战第30天】前端开发技术迭代迅速,新手如何快速掌握前端测试以确保代码质量?本文将介绍前端测试的基础知识,包括单元测试、集成测试和端到端测试,以及常用的测试工具如Jest、Mocha、Cypress等。通过实践和学习,你也能成为前端测试高手。
55 4
|
1月前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
133 1
|
2月前
|
Web App开发 前端开发 安全
前端研发链路之测试
本文由前端徐徐撰写,介绍了前端测试的重要性及其主要类型,包括单元测试、E2E测试、覆盖率测试、安全扫描和自动化测试。文章详细讲解了每种测试的工具和应用场景,并提供了选择合适测试策略的建议,帮助开发者提高代码质量和用户体验。
51 3
前端研发链路之测试
|
1月前
|
前端开发 Unix 测试技术
揭秘!前端大牛们如何高效管理项目,确保按时交付高质量作品!
【10月更文挑战第30天】前端开发项目涉及从需求分析到最终交付的多个环节。本文解答了如何制定合理项目计划、提高团队协作效率、确保代码质量和应对项目风险等问题,帮助你学习前端大牛们的项目管理技巧,确保按时交付高质量的作品。
41 2
|
1月前
|
前端开发 数据管理 测试技术
前端自动化测试:Jest与Cypress的实战应用与最佳实践
【10月更文挑战第27天】本文介绍了前端自动化测试中Jest和Cypress的实战应用与最佳实践。Jest适合React应用的单元测试和快照测试,Cypress则擅长端到端测试,模拟用户交互。通过结合使用这两种工具,可以有效提升代码质量和开发效率。最佳实践包括单元测试与集成测试结合、快照测试、并行执行、代码覆盖率分析、测试环境管理和测试数据管理。
68 2