手写Vue系列-环境搭建及Jest单元测试

171 阅读1分钟

vue3出来也好久了,一直没时间来系统的学习,都是凭着几年前对vue2的那点基础来写项目,说句实话,options api写久了,突然接触composition api着实有些不习惯,但看在vue3大势所驱,还是决定沉下心来仔细学习一下vue3,本系列教程(日志)都是按照视频教程的步骤,加上自己的一些理解进行编写的,其实就是起到一个备忘的作用。

初始化目录

首先,创建好项目所需的目录以及package.json

mkdir mini-vue
yarn init -y

A19F6B3E-75F9-47CF-9B1A-489B6B97EB1B.png

Jest单元测试

创建如下目录结构:

F5EADBBE-C99F-4A88-A999-1BA8A3B86BCE.png

集成typescript

安装typescript,全局或者dev环境。

yarn add typescript --dev

初始化tsconfig.json文件。

tsc --init

执行完成之后便会在根目录得到一个tsconfig.json文件,这就是typescript编译的配置文件。

为了让typescript支持jest,向tsconfig.json添加如下配置项:

{
    "types": ["jest"], 
    "noImplicitAny": false
}

安装Jest

安装所需依赖

yarn add jest @types/jest --dev

添加scripts

打开package.json,添加scripts,如下所示:

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

添加测试用例

创建 src/reactivity/tests/index.spec.ts

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

测试

执行如下命令:

yarn test

636D308F-3D21-46CC-9CAC-37C27FE9DDCD.png

到这里,简单的单元测试就配置好了。

配置babel及typescript

jest默认的测试语法是commonjs,为了编写测试用例更为简单顺手,接下来需要让其支持esm语法,以及对typescript文件的支持。

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

创建babel.config.js

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

修改index.spec.ts如下:

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

创建 src/reactivity/index.ts

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

再次测试

6E4EDAEA-1C12-406E-8ECD-FF7FA500016F.png

到这一步,基本的单元测试环境就已经搭建完成。

源码:https://www.aliyundrive.com/s/k6znSv1w4Yp