Jest 学习笔记(一) #85
zhangyu1818
announced in
zh-cn
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
安装Jest
安装Jest
安装Bable
在根目录创建
bable
配置文件如果不安装
babel
,Jest
测试文件中需要使用commonJS
不兼容es
标准,需要使用babel
才可以正常使用es
模块导入导出匹配器
普通匹配器
toBe(...)
匹配器在这段代码中,
expect(2 + 2)
返回一个“期望”的对象,通常不会对期望对象调用过多的匹配器,在这里,使用的是toBe(...)
匹配器,当Jest
运行时,它会跟踪所有失败的匹配器,并打印出详细的错误信息test(...)
表示这是一个测试用例,第一个参数为测试的描述,第二个参数是测试执行的函数,上述测试,用白话来看就是:期望 2 + 2的结果应该是 4
toEqual(...)
匹配器toBe
只是简单的使用Object.is()
进行判断,在复杂值判断时就不会正确,这时候需要使用toEqual
来判断,toEqual
会递归判断对象或数组的每一个字段not
匹配器not
匹配器能够对结果取反真值
测试时有时候需要区分
undefined
、null
、false
,有时又不需要区分,Jest
对此提供了相应的匹配器toBeNull
只匹配null
toBeUndefined
只匹配undefined
toBeDefined
与toBeUndefined
相反toBeTruthy
匹配任何if
语句为真toBeFalsy
匹配任何if
语句为假数字
在
javascript
中,浮点类型判断也许会有误差,如常知的0.1 + 0.2 != 0.3
,这时候需要使用toBeCloseTo
来进行匹配字符串
toMatch
匹配器toMatch
匹配器可以对字符串进行正则匹配数组和可迭代对象
toContain
匹配器toContain
匹配器可以判断一个数组或可迭代对象中是否包含某个特定项抛出异常
toThrow
匹配器如果测试的特定的函数需要抛出一个错误,需要使用
toThrow
匹配器测试异步代码
回调函数
test
函数接收一个函数参数,执行函数表示回调函数执行完毕,测试结束,如果done()
没有被调用执行,那么这个测试将会失败Promise
更简单的方式是使用
Promise
,Jest
会等待Promise
执行完毕,如果Promise
执行reject
,测试将失败.resolves
可以用
resolves
匹配器来匹配Promise
的resolve
.rejects
如果想要
Promise
被reject
,可以使用.rejects
匹配器async/await
最简单的方法是使用
async
和await
你也可以将
async
和.resolves
、'.rejects'一起使用设置测试前置和后置任务
某些测试用例,需要在运行测试时进行一些准备工作,如类实例的初始化,测试结束后的某些操作
beforeEach
、afterEach
每次测试设置beforeEach
在每一个测试用例开始测试之前执行,如上每次测试之前会执行initializeCityDatabase()
afterEach
则是在每一个测试用例测试结束后执行,如上每次测试之后会执行clearCityDatabase()
beforeEach
、afterEach
处理异步代码的方式和test
一样,可以在异步代码执行完毕后调用done()
函数,也可以返回一个Promise
让Jest
处理beforeAll
、afterAll
一次性设置某些情况,如异步初始化数据库,只需要在某一组(简单来讲可以是一个
*.test.js
文件)测试之前和结束时进行设置,可以使用beforeAll
、afterAll
作用域
默认情况下,
before
和after
会以文件为作用域作用于每次都测试,你也可以使用describe
来将测试分组,当before
和after
包含在describe
块中时,它们就只作用于describe
块中的测试用例需要注意的是,最外层的
before
和after
仍然会作用于describe
块中的测试describe
和test
块的执行顺序Jest
会在所有真正的测试开始之前执行测试文件里所有的describe
,所以任务写在before*
和after*
而不是直接卸载describe
中,当所有describe
执行完毕后,Jest
会按照test
出现顺序依次执行Beta Was this translation helpful? Give feedback.
All reactions