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

39,999次阅读
没有评论

共计 1409 个字符,预计需要花费 4 分钟才能阅读完成。

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 文件中写入如下内容,看注释

Vue3 Typescript Vitest 单元测试环境 基础用例篇
然后去 packag.json 文件中配置启动命令,模式,修改了马上自动测试,我不喜欢这个方式,配置一个命令行参数–watch==false 就可以关闭这种行为
Vue3 Typescript Vitest 单元测试环境 基础用例篇

编写第一个测试用例

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

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

总结

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

题外

安装 vscode 扩展
Vue3 Typescript Vitest 单元测试环境 基础用例篇
然后就可以直接在代码里面点击左侧图标即可开始测试
Vue3 Typescript Vitest 单元测试环境 基础用例篇
不过这个插件现在有挺多 bug,如果报错你可能需要去插件那里设置一下命令行,类似于这样
Vue3 Typescript Vitest 单元测试环境 基础用例篇

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

原文地址: Vue3 Typescript Vitest 单元测试环境 基础用例篇

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于2025-02-01发表,共计1409字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)