在vue3中测试执行typescript代码片段

官方推荐的vitest方法

在vue3+typescript项目中,一般来说用vite做构建系统。做测试的话,目前官方推荐的是vitest。官方文档在

https://vitest.dev/guide/

在vue3+typescript+vite5项目中,运行安装命令

npm install -D vitest

就可以把vitest安装好。

在package.json中的script段增加一行

"test": "vitest run"

在vite.config.ts文件中,加入首行

/// <reference types="vitest" />

 在plugins段增加一条

test: {
    // include:['**/*.{test,spec}.?(c|m)[jt]s?(x)'],
    globals: false,
    environment: "jsdom",
},

这是对vitest的配置项。因为我是用vue3开发网页,所以这里用的environment是jsdom

在项目目录的src目录创建一个test目录,在这个目录中写测试代码

按照vitest的约定,测试代码的命名规则是test_name.spec.ts或者test_name.test.ts,其中test_name由开发者自己定义,后面的spec.ts或者test.ts则是系统要求的。将来在调用时,可以在项目的根目录运行命令

npm test test_name

就可以针对这个文件单独进行测试,而不必按照监控模式随时测试,也不必一次性把所有的测试用例全跑一遍,因为后面两种模式速度比较慢。

按照vitest的官方文档中的例子

// sum.test.js
import { expect, test } from 'vitest'
import { sum } from './sum'

for(let i:number=0;i<20;++i){
    console.log([Math.random(), Math.randome()])
}

test('adds 1 + 2 to equal 3', () => {
  expect(sum(1, 2)).toBe(3)
})

其中sum来自开发者自己开发的代码,通过test、expect、toBe就可以进行测试

实际上这个代码是按照从上到下的顺序执行的,也就是说,在test被调用之前,其实还可以做很多。比如说有这么一个函数,可以生成一系列散列点,而且是随机的,所以无法直接在test里通过expect和toBe来测试,但是可以在test之前,通过console.log()来输出,然后用其他工具——比如Excel——对这些输出数据进行处理——比如绘制散点图——来检查。

在一个vue3项目中,因为目录和代码组织的关系,必须要靠vite才能把不同目录的代码组织起来。以前js时代还勉强可以用node搞一搞,直接把一些调用函数的引用关系用相对目录写死,但是ts还需要编译,这种方法几乎不可行。直接简单的写一个ts文件,是不能通过npm直接调用这个ts文件来运行的。但是通过vitest就可以这样直接运行了。

一般来讲,这种方式我会用来测试执行复杂的关联比较多的函数。

直接用vite生成新项目来测试小组件

对于大型项目而言,单文件组件single file component缩写SFC是广泛使用的。

单文件组件 | Vue.js

vitest提供了vue3组件测试的功能,但是经过实践检验,它仅用于测试组件是否出错,比如说语法错误之类,但是对于组件最终的呈现效果,是不会呈现的,所以有时候vitest测试vue3 component没出错,但是这并不意味着没有问题。

所以我一般还会单独测试小组件。方法就是用vite生成一个新的项目

开始 | Vite 官方中文文档

npm create vite@latest

随后按照提示选择vue3和typescript,这样就生成了一个新的最简单的项目。

在这个新生成的项目里,直接把新开发的component放进去,然后检查其呈现效果。

如果这个component需要一些额外的数据,可以通过上面章节vitest运行特定的程序来输出,再把输出结果直接复制粘贴到这个新项目的component里作为硬编码。反正只是临时性测试,硬编码就别在意了。

但是如果使用这种方法也无法检测出问题所在,尤其是怀疑到vue3本身的时候,就必须要使用更底层的方法来处理。

直接用vite生成新项目来测试typescript代码

vite一般是搭配一个框架来构建项目,这个框架一般是vue3或者react。但是其实vite可以构建一个不依赖于任何“框架”的typescript项目。在

npm create vite@latest

 之后按照提示选择Vanilla和typescript即可。这样vite就会创建一个纯粹的不基于任何框架的typescript项目。

如果怀疑代码涉及到vue3内部的一些机制导致代码出错,这个时候可以用这种方式构建一个完全不依赖vue3的项目,在这里测试这些“纯”代码。

那么为什么不直接不使用任何构建系统,用一个空的html和js来测试呢?

因为如果涉及到npm包,如果手动下载配置就会很麻烦,尤其是很难得到编辑器的高亮显示和跳转支持。另外如果开发者自己开发的代码中涉及到复杂的目录组织,涉及到import/export,直接用空的html来测试就会非常麻烦。

采用vite生成不依赖框架的项目,最适合这种情况。

相关推荐

  1. vue3测试执行typescript代码片段

    2024-05-13 23:28:10       14 阅读
  2. CentOS 7使用Python 3执行系统命令

    2024-05-13 23:28:10       34 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-13 23:28:10       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-13 23:28:10       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-13 23:28:10       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-13 23:28:10       20 阅读

热门阅读

  1. Gauss数据库备份恢复

    2024-05-13 23:28:10       13 阅读
  2. leetcode题目122

    2024-05-13 23:28:10       9 阅读
  3. 如何在服务器上下载,解压github上的代码

    2024-05-13 23:28:10       13 阅读
  4. 【C++ 刷题必备技巧】

    2024-05-13 23:28:10       9 阅读
  5. mac 安装homebrew

    2024-05-13 23:28:10       12 阅读
  6. nvm切换node版本命令

    2024-05-13 23:28:10       14 阅读