Jest

vue cli  拥有开箱即用的通过 Jest 或 Mocha 进行单元测试的内置选项。

由于mocha单元测试集合在vue cli下有问题,可以使用 jest 来完成单元测试。

 

 

语法:

普通匹配器:

tobe :   是否精确匹配

 

toBe用的是 js 中的 Object.is() ,属于ES6中的特性,所以不能检测对象,如果要检测对象的值的话,需要用到 toEqual 。

toEquel :   递归检查对象或者数组中的每个字段。

 

  • toBeNull只匹配null
  • toBeUndefined只匹配undefined
  • toBeDefine与toBeUndefined相反
  • toBeTruthy匹配任何if语句为真
  • toBeFalsy匹配任何if语句为假

 

数字匹配器:

大多数的比较数字有等价的匹配器。

  • 大于。toBeGreaterThan()
  • 大于或者等于。toBeGreaterThanOrEqual()
  • 小于。toBeLessThan()
  • 小于或等于。toBeLessThanOrEqual()
  • toBe和toEqual同样适用于数字
    注意:对比两个浮点数是否相等的时候,使用toBeCloseTo而不是toEqual

如:

 

 

如果使用toBe就会产生以下结果:

 

字符串
使用toMatch()测试字符串,传递的参数是正则表达式。

数组
如何检测数组中是否包含特定某一项?可以使用toContain()

 

 另外
如果你想在测试特定函数的时候抛出一个错误,在它调用的时候可以使用toThrow。

 

 

 

测试异步代码

在实际开发过程中,我们经常会遇到一些异步的JavaScript代码。当你有以异步方式运行的代码的时候,Jest需要知道当前它测试的代码是否已经完成,然后它可以转移动另一个测试。也就是说,

测试用例一定要在测试对象结束之后才能够结束

为了达到这一目的,Jest有多种方法可以做到。

 

回调
  最常见的异步模式就是回调函数。

  注意:回调函数和异步没有必然的联系,回调只是异步的一种调用方式

 

Promise

接受promise 时   

 

拒绝promise 时

 

Async/Await

 

 

 为多次测试重复设置

如果你有一些要为多次测试重复设置的工作,可以使用beforeEach和afterEach。

有这样一个需求,需要我们在每个测试之前调用方法initializeCityDatabase(),在每个测试后,调用方法clearCityDatabase()

一次性设置
在某些情况下,你只需要在文件的开头做一次设置。这种设置是异步行为的时候,你不太可能一行处理它。Jest提供了beforeAll和afterAll处理这种情况。

 

作用域


默认情况下,before和after的块可以应用到文件中的每一个测试。

此外可以通过describe块来将将测试中的某一块进行分组。

当before和after的块在describe块内部的时候,则只适用于该describe块内的测试。

比如说,我们不仅有一个城市的数据库,还有一个食品数据库。我们可以为不同的测试做不同的设置︰

 

注意:顶级的beforeEach描述块内的beforeEach之前执行,以下的例子可以方便我们认识到执行的顺序

 

 

 

posted @ 2019-04-08 15:27  咿咿咿  阅读(469)  评论(0编辑  收藏  举报