Chai expect、should、assert 使用总结

阅读时长 4 分钟读完

在前端开发中,测试是不可或缺的一个过程。在测试的过程中,我们需要写一些测试用例来验证代码的正确性。而在编写测试用例的过程中,我们需要用到断言库来判断预期的结果是否和实际结果一致。这篇文章将会介绍 Chai 断言库中的 expect、should、assert 三种方式的使用总结。

一、Chai 简介

Chai 是一个 BDD/TDD 风格的断言库,可以和任何 JavaScript 测试框架搭配使用。它提供了三种风格的断言方式,包括:expect、should 和 assert。

  • expect 风格:类似 RSpec 的 expect/should 语法。
  • should 风格:类似 RSpec 和 Mocha 的 should 语法,比 expect 风格更加易读。
  • assert 风格:类似 Node.js 的 assert 库。

接下来,我们对三种方式一一进行介绍。

二、expect 风格

expect 风格是 Chai 中最常用的一种风格,它通过 expect 函数来包装实际的值,然后和预期值进行比较。

1. 语法格式

2. 示例代码

3. 详解

expect 函数会返回一个对象,这个对象包含了一系列的方法,而这些方法最后都可以通过 to.xxx 的形式进行调用,其中 xxx 是对应的方法名。

  • to.be(expected):判断实际的值是否等于预期的值。这个方法使用了 Object.is 来进行比较,所以比较的时候会使用全等符号(===)。
  • to.equal(expected):判断实际的值是否等于预期的值。这个方法会把 equals 属性为 true 的对象转换成原始数据类型再进行比较。
  • to.have.property(name, expected):判断实际的值是否有一个名为 name 的属性,并且这个属性的值等于预期的值。
  • to.have.lengthOf(expected):判断实际值的 length 属性是否等于预期值。

三、should 风格

should 风格相比 expect 风格来说更加容易理解,它通过将断言加在 Object.prototype 上来实现链式调用。

1. 语法格式

2. 示例代码

3. 详解

should 函数会对调用它的对象添加 should 属性,然后可以对这个属性进行链式调用,其中 xxx 就是对应的方法名。should 风格的断言和 expect 风格的断言方法名是一样的,只不过去掉了 to. 的前缀。

四、assert 风格

assert 风格是 Chai 中的最原始的风格,它的语法比较简单,在使用上也比较直观。

1. 语法格式

2. 示例代码

3. 详解

assert 风格的语法比较简单,它只有一个 assert 对象,这个对象上面有一系列的方法,每个方法都是用来进行某个特定的断言。

  • assert.typeOf(actual, expected):判断实际值的类型是否为对应的字符串。
  • assert.equal(actual, expected):判断实际值是否等于预期值。
  • assert.lengthOf(actual, expected):判断实际值的 length 属性是否等于预期值。

五、总结

Chai 断言库提供了三种不同的风格,分别是 expect、should 和 assert。在编写测试用例时可以根据自己的喜好和习惯选择不同的风格。如果你喜欢使用面向对象的风格,并且希望更加灵活地组合断言,那么选择 expect 风格可能更加合适;如果你喜欢链式调用的风格,并且希望在使用上更加简单,那么选择 should 风格会更加合适;如果你喜欢简单直观的语法,并且对灵活性要求相对不那么高,那么选择 assert 风格可能更加合适。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6496de8748841e989440f33d

纠错
反馈