5.setup环境-集成jest做单元测试-继承ts

325 阅读2分钟

本节是开始mini-vue项目的配置及集成jest。下一节写reactive的实现。 新建minivue文件夹,在该目录下yarn init -y初始化项目并生成package.json文件。

yarn init -y

创建src文件夹并创建reactivity文件夹,reactivity下新建index.ts作为reactivity的出口。 接着我们需要创建对应的jest,通过单元测试的方式,让项目跑起来。首先在src下新建test文件夹,并在tests下创建index.spec.ts文件,并输入内容

it("init",() => {
  expect(true).toBe(true)
})

image.png

这时会发现,代码提示报错了。怎么解决呢,需要把ts集成进来。

npx tsc --init

通过该命令,帮助我们创建tsconfig,但是会发现报错了,告诉我们需要TypeScript.

image.png

那怎么安装呢?yarn add typescript --dev,装到dev环境就可以了。

yarn add typescript --dev

装完之后 npx tsc --init,就会生成一个tsconfig.json配置文件。

npx tsc --init

创建好之后,我们需要解决index。spec。ts的报错。yarn add jest @types/jest --dev

yarn add jest @types/jest --dev

安装完成之后还需要在index.spec.ts中配置type

image.png

至此,index.spec.ts文件的报错就解决了。 接着,我们在package.json中配置一下启动快捷命令。

"scripts":{
    "test":"jest"
  },

运行yarn test可以看到测试结果为通过。

yarn test

image.png

以上是第一点,那我们使用esmodule模块是否能正常运行呢? src\reactivity\index.ts输入

export function add(a, b){
  return a + b;
}

发现存在报错,我们可以将tsconfig.json中的onInplicitAny启用并修改为false,这样就可以忽略类型了。

image.png

接着我们修改src\reactivity\tests\index.spec.ts的内容为

import {add} from '../index'
it("init",() => {
  expect(add(1,1)).toBe(2)
})

执行测试,发现报错了,这是因为jest是基于commonJS规范,而我们代码是ES-module规范,所以我们需要用babel进行转换。 那怎么安装呢,这个其实jest官方文档(jestjs.io/docs/gettin…

yarn add --dev babel-jest @babel/core @babel/preset-env

安装完成后,我们创建一个babel.congig.js文件,进行配置。

module.exports = {
  presets: [
    ['@babel/preset-env', {targets: {node: 'current'}}],
    '@babel/preset-typescript',
  ],
};

并让它支持TypeScript.

yarn add --dev @babel/preset-typescript

完成后我们再执行yarn test可以看到测试通过了。到这里,我们的单元测试环境就差不多了。

代码地址:github.com/zhangchongy…