如何使用 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
构建高效前端项目:现代包管理器与模块化的深度解析
【2月更文挑战第21天】 在当今快速演变的前端开发领域,高效的项目管理和代码组织已成为成功交付复杂Web应用的关键。本文将深入探讨现代前端包管理器如npm, yarn和pnpm的工作原理,以及它们如何与模块化编程实践(例如CommonJS、ES6模块)协同工作以优化开发流程。我们将剖析这些工具的内部机制,了解它们如何解决依赖冲突,提高安装速度,并保证项目的健壮性。同时,本文还将介绍模块化编程的最佳实践,包括代码拆分、重用和版本控制,帮助开发者构建可维护且性能卓越的前端项目。
|
1月前
|
缓存 前端开发 JavaScript
Vite 构建流程大揭秘:快速构建前端项目的秘密武器
Vite 构建流程大揭秘:快速构建前端项目的秘密武器
|
1月前
|
前端开发 JavaScript jenkins
构建高效前端项目:从模块化到自动化
【2月更文挑战第13天】 随着Web技术的不断进步,前端项目的复杂性日益增加。为了确保可维护性和性能,前端工程师必须采用模块化和自动化的策略来优化开发流程。本文将探讨如何使用现代前端工具和最佳实践来构建一个高效的前端项目架构,包括模块打包、代码分割和持续集成等方面。
|
2月前
|
缓存 JavaScript 前端开发
IDEA启动VUE前端项目
IDEA启动VUE前端项目操作流程
|
3月前
|
前端开发 JavaScript 测试技术
探索现代前端工程化工具与流程:提升开发效率和项目质量
探索现代前端工程化工具与流程:提升开发效率和项目质量
探索现代前端工程化工具与流程:提升开发效率和项目质量
|
3月前
|
缓存 前端开发 JavaScript
「零基础」掌握Webpack:10个必学技巧,为前端项目保驾护航!(三)
「零基础」掌握Webpack:10个必学技巧,为前端项目保驾护航!
|
23天前
|
前端开发 应用服务中间件 nginx
Nginx配置详解Docker部署Nginx使用Nginx部署vue前端项目
Nginx配置详解Docker部署Nginx使用Nginx部署vue前端项目
95 0
|
1月前
|
前端开发 JavaScript 测试技术
构建高效前端项目:模块化与组件化策略
【2月更文挑战第25天】 在现代网页开发中,随着用户对于网页性能和交互体验的期待不断提升,前端项目的复杂性也随之增加。为了应对这种复杂性并提高开发效率,本文将探讨模块化与组件化在前端项目中的应用策略。通过分析这两种方法的优势与适用场景,我们将揭示如何利用它们来优化项目结构,提升代码复用率,以及加快开发流程。
31 4
|
1月前
|
前端开发 JavaScript 应用服务中间件
部署前端项目到服务器过程详解
部署前端项目到服务器过程详解
102 0
|
1月前
|
资源调度 前端开发 JavaScript
构建高效前端项目:模块化与组件化的最佳实践
【2月更文挑战第13天】在现代前端开发的浪潮中,模块化和组件化已经成为提升项目可维护性和开发效率的核心原则。本文深入探讨了如何通过合理的模块划分、组件设计以及工具选择来优化前端项目结构,同时确保代码的复用性和可测试性。我们将从理论出发,结合实例分析,为前端开发者提供一套行之有效的最佳实践指南。