如何使用 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 中各种验证方法做详细讲解,敬请期待 ^-^

相关文章
|
26天前
|
JavaScript 前端开发 安全
在众多的测试工具中,Cypress以其强大的端到端测试能力和与TypeScript的完美结合,成为了前端开发者的首选
【6月更文挑战第11天】Cypress结合TypeScript,打造前端测试新体验。TypeScript增强代码可读性和稳定性,Cypress提供强大端到端测试,二者结合提升测试准确性和可靠性。通过类型定义、自定义命令和断言,优化测试代码;Cypress模拟真实用户操作、时间旅行功能及内置调试工具,确保应用功能性能。推荐前端开发者使用TypeScript+Cypress进行端到端测试。
44 2
|
2月前
|
前端开发 JavaScript
前端项目公共组件封装思想
该文介绍了如何封装通用组件,如表单搜索、表格展示和分页器。首先,通过抽离出公共部分,创建`TableContainer`组件,利用具名插槽插入`navbar`和`table`,并通过props传递标题。然后在父组件中使用具名插槽和子组件实现具体功能。文中还展示了更复杂的组件封装示例,通过props实现数据双向绑定,以`el-pagination`为例,利用`sync`修饰符和`computed`属性监听并更新父组件状态,实现分页功能。文章最后提到了内容来源于哪。
|
3天前
|
前端开发 应用服务中间件 nginx
网页设计,若依项目修改(It must be done)01----若依打包位置,nginx代理前端静态资源和后端接口,就是怎样设置转载,访问固定端口,让他访问其他资料的配置文件,访问/,给你那些
网页设计,若依项目修改(It must be done)01----若依打包位置,nginx代理前端静态资源和后端接口,就是怎样设置转载,访问固定端口,让他访问其他资料的配置文件,访问/,给你那些
|
5天前
|
Devops jenkins 测试技术
如何在Visual Basic项目中实施单元测试以确保代码健壮性
【7月更文挑战第2天】本文探讨了如何在Visual Basic项目中实施单元测试以确保代码健壮性。单元测试基础包括验证代码单元的功能,促进重构和提高代码质量。MSTest、NUnit和xUnit是VB.NET的单元测试工具。遵循TDD原则,保持测试独立,关注单一功能,并确保快速执行。示例展示了如何为`Calculator`类的加法方法编写MSTest。持续集成与自动化测试工具如Jenkins和Azure DevOps辅助测试运行和代码质量检查。单元测试是提升软件质量和开发效率的关键实践,反映了良好的开发文化。
9 2
|
9天前
|
敏捷开发 缓存 前端开发
阿里云云效产品使用问题之流水线构建前端项目比较慢。该如何优化
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
15天前
|
前端开发 Shell 容器
前端练习小项目——视觉冲击卡片
前端练习小项目——视觉冲击卡片
|
2天前
|
开发框架 前端开发 JavaScript
若依怎样看开发文档,域名搜这个就行ruoyi.vip,建链接点击在线文档,有前端手册和后端手册,若依文档里有项目扩展,项目扩展有大量的开源的软件
若依怎样看开发文档,域名搜这个就行ruoyi.vip,建链接点击在线文档,有前端手册和后端手册,若依文档里有项目扩展,项目扩展有大量的开源的软件
|
2天前
|
前端开发 JavaScript Linux
若依修改之后,无法访问前端项目如何解决,只能访问后端的接口,我的接口8083,端不显示咋解决?在vue.config.js文件中的映射路径要跟后端匹配,到软件商店里找到Ngnix配置代理,设80不用加
若依修改之后,无法访问前端项目如何解决,只能访问后端的接口,我的接口8083,端不显示咋解决?在vue.config.js文件中的映射路径要跟后端匹配,到软件商店里找到Ngnix配置代理,设80不用加
|
2天前
|
前端开发
支付系统--微信支付21--搭建前端环境,payment-demo-front这个项目文件夹是前端显示文件,payment-demo是后端项目,支付页面常见三个页面:购买课程,我的订单,下载账单
支付系统--微信支付21--搭建前端环境,payment-demo-front这个项目文件夹是前端显示文件,payment-demo是后端项目,支付页面常见三个页面:购买课程,我的订单,下载账单
|
2天前
|
前端开发
uniapp 实战 -- 创建 uni-admin 项目,部署到 uniCloud 前端网页托管(免费云空间)
uniapp 实战 -- 创建 uni-admin 项目,部署到 uniCloud 前端网页托管(免费云空间)
4 0