测试方法
describe
用来描述测试体的
第一个参数表示测试的目的(具有目的性)
第二个参数是测试体,在测试体中,我们进行测试
it
用来定义每个测试语句
第一个参数表示测试语句的说明(具有目的性)
第二个参数是函数,表示测试功能的实现(将具体的断言写在函数内)
expect
用来定义断言的。
参数是一个表达式,
返回值就是需要判断的结果,我们可以通过一些判定方法来判断
判断方法
toBe()
相当于===
toEqual()
判断字面量是否相等
toMatch()
参数是正则,判断正则是否匹配
toContain
数组中是否包含该成员
toBeTruly
结果是否为真
toBeFalsly
结果是否为假
周期方法
beforeEach
每次执行测试语句之前,都执行的方法
afterEach
每次执行测试语句之后,都执行的方法
beforeAll
所有测试语句执行之前,执行的方法
afterAll
所有测试语句执行之后,执行的方法
测试虚拟DOM
jest可以对一些业务逻辑进行测试,但是在React开发中,我们主要开发组件视图,因此对于业务逻辑测是的工作较少,为了能够测试组件,react提供了enzyme插件,enzyme插件提供了shallow方法,可以将组件类实例化,
但是react发展更新的很快,因此为了解决版本不同的问题,参考了babel设计方案。enzyme为每一个版本的react提供了一个插件,我们开发16版本react,因此要使用16版本适配器插件enzyme-adaptor-react-16,因此在项目中,我们要安装这两个插件:
yarn add enzyme enzyme-adaptor-react-16
我们要创建配置文件setupTests.js文件,在文件中引入适配器配置
configure({ adapor: new Adaptor() })
configure是由enzyme 模块提供的方法
Adaptor是由enzyme-adaptor-react-16模块提供的方法
shallow方法测试虚拟DOM
我们通过shallow方法,可以将组件转成虚拟DOM,就可以测试了
发布项目
我们可以通过yarn build指令来发布项目,此时会将我们开发的代码发布到build目录下,该目录下的代码我们就可以上线了
发布的文件都帮助我们实现了工程化了:合并,压缩,添加指纹等等
webpack配置
我们可以通过yarn eject指令输出webpack配置,
注意:该操作是不可逆的,一旦我们输出配置,我们只能使用webpack编译了
// 引入库
import { configure } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
// 配置
configure({ adapter: new Adapter() })
// 引入shadow方法
import { shallow } from 'enzyme';
// 引入工具
import { add } from './util/tools.jsx';
// 测试整体描述
describe('测试App组件', () => {
// console.log(111, shallow)
// console.log('test')
// 组件容器
let wrapper = null;
// 每个测试语句执行之前
beforeEach(() => {
// 将虚拟DOM创建
wrapper = shallow(<App></App>)
console.log('beforeEach')
})
// 每个测试语句执行之后
afterEach(() => {
// 将其销毁
wrapper.unmount();
console.log('afterEach')
})
// 所有测试语句执行之前
beforeAll(() => {
console.log('beforeAll')
})
// 所有测试语句执行之后
afterAll(() => {
console.log('afterAll')
})
// 测试
it('测试add方法是否正确', () => {
// 定义断言
expect(add(10, 20))
// 希望结果是30
.toBe(30)
})
})