Vue3+Typescript+Vitest单元测试环境+基础用例篇

Vue3单元测试

近来工作接触了一个有意思的东西,那就是Vue3的单元测试。虽说写起来费时费力,但是它确实可以让我们设计的组件更加健壮、更加合理且风险可控,同时编写单元测试也让我们更近一步理解组件的设计原理,好了废话不多说,直接开始吧。

快速开始

初始化一个vue3+typescript项目,移除不需要的内容

pnpm create vite

接下来是安装vitest,这是和vitest配合使用的测试框架,兼容jest,具体可参考官网
vitest中文官网

pnpm add -D vitest

再然后是安装一个测试Vue组件的库,是vue官方开发的,叫做@vue/test-utils,具体可参考官网@vue/test-utils官网

pnpm add -D @vue/test-utils

然后再安装一个模拟浏览器环境的库jsdom

pnpm add -D jsdom

最后让我们安装一个支持tsx语法的库,这一步不是必须的,但我喜欢tsx

pnpm add @vitejs/plugin-vue-jsx

配置环境

由于vitest是和vite可以结合的,所以这部分配置可以直接写到vite的config里面,前提是要在vite.config.ts中加入三斜线命令,这个在官网有特别提到。配置可以写入如下内容

打开项目,在vite.config.ts文件中写入如下内容,看注释

vite.config.ts配置文件
然后去packag.json文件中配置启动命令,模式,修改了马上自动测试,我不喜欢这个方式,配置一个命令行参数–watch==false 就可以关闭这种行为
pakage.json文件

编写第一个测试用例

打开vscode新建一个components目录并新增一个button目录,然后再建一个__test__目录放测试文件,elemetn-plus源码也是这样做的,在里面新建一个xxx.test.ts或者tsx的文件(没安装tsx就建ts文件)
在这里插入图片描述
然后再里面写入一个最简单的测试例子,如下图所示
在这里插入图片描述
这个例子非常简单,所使用的API都是从vitest中倒入,其中几个意思是

  • describe 的意思是描述一个快,你可以认为是一个测试集合
  • it 的意思是一个独立的测试区域,每个it应该负责单一的测试功能
  • expect的翻译是断言的意思,就是断言这个内容是不是符合某个值或者某些行为
  • toBe这里就是一个断言方式
    所以上述例子的意思是断言1是不是等于1,答案显而易见是通过的,此时执行pnpm test将会得到如下结果
    在这里插入图片描述
    可以看到,一个文件通过,一个测试通过,现在让我们断言失败看看效果,我们尝试将toBe的内容改成2
    在这里插入图片描述
    从图中可以看到,这里说期望的是2,然后收到的是1,所以报错了,测试不通过

总结

环境配置非常简单,我看过网上的教程说jest配合vue使用是需要做额外的配置的,但是在vite中是无需额外的心智负担,只需要按照这简单的流程配置即可使用,vitest默认会检测项目中所有.test.ts或者.test.tsx等之类的测试文件,这个是可以修改的,具体配置可以参考官网去改。另外如果使用vscdoe的用户还可以装一个插件,这个插件安装了就不需要手动打命令。

题外

安装vscode扩展
在这里插入图片描述
然后就可以直接在代码里面点击左侧图标即可开始测试
在这里插入图片描述
不过这个插件现在有挺多bug,如果报错你可能需要去插件那里设置一下命令行,类似于这样
在这里插入图片描述

好了,本次的单元测试分享到此结束,下一节我们学习如何测试一个组件

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3 + TypeScript 是一种常用的前端开发技术组合,它结合了Vue框架的便捷性和TypeScript的类型检查能力,可以提高项目的可维护性和开发效率。下面是一些Vue3 + TypeScript项目经验的介绍: 1. 项目初始化:使用Vue CLI创建一个Vue3项目,并选择TypeScript作为项目的语言。这样可以自动生成一些基本的配置和文件结构,方便快速开始开发。 2. 类型定义:在Vue3 + TypeScript项目中,可以使用TypeScript的类型系统来定义组件的props、data、computed等属性的类型,以及事件的参数类型等。这样可以在编码过程中及早发现潜在的类型错误,提高代码的健壮性。 3. 组件开发:在Vue3 + TypeScript项目中,可以使用装饰器(decorators)来定义组件选项,如使用@Prop来定义props属性的类型,使用@Emit来定义事件的参数类型。这样可以更清晰地描述组件的接口和行为。 4. 路由管理:在Vue3 + TypeScript项目中,可以使用Vue Router进行路由管理。通过定义路由的类型和参数类型,可以在编码过程中获得更好的类型提示和错误检查。 5. 状态管理:在Vue3 + TypeScript项目中,可以使用Vuex进行状态管理。通过定义状态的类型和操作的参数类型,可以提高代码的可读性和可维护性。 6. 第三方库的使用:在Vue3 + TypeScript项目中,可以使用第三方库,并为其编写类型声明文件,以获得更好的类型检查和代码提示。如,可以使用axios发送HTTP请求,并为其编写类型声明文件,以确保请求参数和响应数据的类型正确。 7. 单元测试:在Vue3 + TypeScript项目中,可以使用Jest等测试框架进行单元测试。通过编写类型安全的测试用,可以提高代码的质量和可靠性。 8. 构建和部署:在Vue3 + TypeScript项目中,可以使用Webpack等构建工具进行项目的打包和优化。通过配置合适的TypeScript编译选项和Webpack插件,可以生成高效的生产环境代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值