本节是开始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)
})
这时会发现,代码提示报错了。怎么解决呢,需要把ts集成进来。
npx tsc --init
通过该命令,帮助我们创建tsconfig,但是会发现报错了,告诉我们需要TypeScript.
那怎么安装呢?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
至此,index.spec.ts文件的报错就解决了。 接着,我们在package.json中配置一下启动快捷命令。
"scripts":{
"test":"jest"
},
运行yarn test可以看到测试结果为通过。
yarn test
以上是第一点,那我们使用esmodule模块是否能正常运行呢? src\reactivity\index.ts输入
export function add(a, b){
return a + b;
}
发现存在报错,我们可以将tsconfig.json中的onInplicitAny启用并修改为false,这样就可以忽略类型了。
接着我们修改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可以看到测试通过了。到这里,我们的单元测试环境就差不多了。