The path to a module that runs some code to configure or set up the testing framework before each test.
可以用来初始化test配置, 在这里需要使用enzyme-adapter
// /test/setup.ts
import { configure } from 'enzyme'
import * as ReactSixteenAdapter from 'enzyme-adapter-react-16'
configure({ adapter: new ReactSixteenAdapter() })
collectCoverageFrom
需要测试覆盖率的文件
coverageDirectory
覆盖率输出目录
transform
A map from regular expressions to paths to transformers. A transformer is a module that provides a synchronous function for transforming source files
前言
最近第一次给一个项目写一个完整的测试流程, 也算是我第一次写完整的测试. 于是记一下整个测试流程 项目地址 目前项目使用的测试框架是主流的
jest
+enzyme
依赖
必要依赖
按需
babel
,则需要babel-jest
typescript
, 则需要ts-jest
snapshot
, 则需要enzyme-to-json
Jest 配置
起初项目使用
babel
进行编译,后面统一转成了ts
如果使用
babel
的话, 只要将ts
转成js
,ts-jest
转成babel-jest
即可。moduleNameMapper
用来
mock
一些额外module
, 比如sass
,jpg
等等.setupFilesAfterEnv
可以用来初始化
test
配置, 在这里需要使用enzyme-adapter
collectCoverageFrom
需要测试覆盖率的文件
coverageDirectory
覆盖率输出目录
transform
跟
webpack-loader
类似testMatch
测试文件匹配规则, 如果跟官方不同, 则修改此值.
Enzyme 使用
官方文档
简单介绍
其实
enzyme
上手挺简单的, 它有三个API
包括
shallow
、mount
和render
, 其中shallow
和mount
是常用的他们区别是
shallow
: 只会渲染顶级组件, 而子组件不会渲染, 渲染结果是一颗react
树, 效率最高mount
: 会渲染整个组件, 包括子组件, 如果需要深入组件内部测试, 则需要使用mount
render
: 直接选择普通的html
结构.shallow
和mount
得到结果是一个ReactWrapper
对象, 可以进行多种操作, 包括find()
、prop()
、instance()
等。基本使用
其实
enzyme
常用的api大概就是几个, 按照本项目中用到的,进行测试
编写完
test case
后, 只要调用jest
即可进行测试, 同时会输出覆盖率 如果带上--watch
则可以监听文件改动并进行测试上传测试覆盖率
目前使用
Codecov
来管理测试覆盖率 如果在本地上传, 则需要带上token
, 如果通过travisCi
, 则不需要, 直接调用codecov
即可。完结
至此, 整套
jest
+enzyme
测试流程已经跑完. 目前看来没有用高更深的测试功能, 比如说jsdom
,enzyme.render
等