yyman001 / blog

日常疑问记录解答
5 stars 0 forks source link

初试 Jest 测试单元 #54

Open yyman001 opened 6 years ago

yyman001 commented 6 years ago

测试单元

前言

为编写的功能代码提供可靠的测试,覆盖测试,确保模块功能可靠.

安装/配置

    yarn add --dev jest
    // or
    npm install --save-dev jest

注意命名

一般存放于test__test__目录下,文件名规范*.test.js

组成结构

一般使用方法,新建`test`方法,第一个参数为`测试方法描述`,第二个参数为回调函数(可传入done参数-一般异步回调使用)
// 一般使用
 test('描述',(=>{
   // 断言表达式
  expect(需要校验的函数或表达式).断言类型
}))
那么能否划分区块? 当然,可使用`describe`方法,
// 使用 describe 进行块划分
describe('测试模块名描述', ()=>{
    // 一些 test 方法
   test()...
})

简单示例

//  demo.test.js
test('adds 1 + 2 to equal 3', () => {
  expect(1 + 2).toBe(3);
});

常用断言

断言用来对我们数据的预估盼望,例如 盼望 1 + 1 = 2, 就可以使用断言语法 expect(1 + 1), 表达式, 盼望结果? toBe(2),就可以了. 我们把它们按照各种类型分类会比较好,因为这个断言函数实在是太多,想要细分几个我们常用的数据类型就好.

常用断言

基本数据类型判断

toBeNull(value):只匹配null toBeUndefined(value):只匹配undefined toBeDefined(value):与toBeUndefined相反 (判断变量是否已经定义非 undefined 值) toBeTruthy(value):匹配任何使if语句为的值 toBeFalsy(value):匹配任何使if语句为的值

判断对象

toEqual(value):用于对象的深比较(对象值是否全部相等) toBeInstanceOf(class):判断是不是class的实例

判断字符串

toMatch(regexpOrString):用来检查字符串是否匹配,可以是正则表达式或者字符串 toContain(item):用来判断item是否在一个数组中,也可以用于字符串的判断

判断数值

toBeGreaterThan(number): 大于 toBeGreaterThanOrEqual(number):大于等于 toBeLessThan(number):小于 toBeLessThanOrEqual(number):小于等于

函数

resolves:用来取出promise为fulfilled时包裹的值,支持链式调用 rejects:用来取出promise为rejected时包裹的值,支持链式调用 toHaveBeenCalled():用来判断mock function是否被调用过 toHaveBeenCalledTimes(number):用来判断mock function被调用的次数

高级自定义断言

这个比较高级,可以自己写断言函数,当官网给的断言无法满足自身需求的时候用上的高级功能. extend(matchers):自定义一些断言

参考资料