如何在 Chai 中添加自定义断言

阅读时长 5 分钟读完

在前端开发中,测试是一个极其重要的部分。一个好的测试可以在减轻开发负担的同时大大提高代码的质量和可读性。而 Chai 是一个极其受欢迎的断言库,它的可扩展性也非常强,可以轻松地扩展库中的断言方法。本文将介绍如何在 Chai 中添加自定义断言。

Chai 的基本用法

在开始讲解如何添加自定义断言之前,我们先来回顾一下 Chai 的基本用法。

Chai 可以用来做行为驱动开发(BDD)和测试驱动开发(TDD)。它提供了三种不同的断言风格,分别是 assert 风格、expect 风格和 should 风格。不同风格只是语法上的区别,本质上是实现了相同的功能。下面是一个简单的例子:

-- -------------------- ---- -------
----- ---- - ---------------
----- ------ - -----------
----- ------ - -----------
----- ------ - -------------

---------------- -- -- -
  ---------- ---- -- -- -
    -------------- - -- --
  --

  ---------- ---- -- -- -
    -------- - --------------
  --

  ---------- ---- -- -- -
    --- ------------------
  --
--

如何添加自定义断言

在 Chai 中添加自定义断言主要分为两个步骤,第一步是创建一个名为 chai.use() 的函数来声明自定义插件,第二步是在插件中定义自定义断言方法。

创建一个插件

Chai 的插件需要实现一个 chai.use() 函数,这个函数接受一个 Chai 实例对象作为参数,返回一个包含了自定义断言方法的对象。

下面是一个例子,这个插件实现了一个名为 notEmpty 的自定义断言方法,用于判定一个字符串是否为空。

-- -------------------- ---- -------
----------------------- ------ -
  ------------------------------------ ---------- -
    ----- --- - ---------------- ---------
    --- -------------------------------------
    ------------
      ---------- - -- 
      --------- ------- -- -- - --------- --------
      --------- ------- -- -- -- ----- -------
    -
  --
--

在该例子中,我们先调用了 chai.use() 函数来声明自定义插件,将其挂载到 chai 上。然后在插件中,使用了 chai.Assertion.addMethod() 方法来定义了一个自定义断言方法。这个方法接受一个参数,即被测试的字符串,它首先使用了 utils.flag() 方法来获取传入的字符串。然后在对这个字符串进行判断,如果不是字符串类型,就会抛出错误;接着使用了 this.assert() 方法来进行断言。其中第一个参数就是测试的条件,如果不符合条件就会抛出错误;第二个和第三个参数分别为满足和不满足条件的错误提示。

在插件中定义自定义断言方法

在自定义插件中使用 chai.Assertion.addMethod() 方法添加自定义断言方法,这个方法接受两个参数,分别为自定义断言方法的名称和一个自定义方法的实现。

在添加自定义断言方法中,我们要使用 chai 中已有的断言方法来进行测试。同时使用了 chai.assert() 方法来进行条件判断,如果不符合条件就抛出错误。

举例来说,我们如果想要添加一个自定义断言方法,用于测试两个数组是否相等。那么代码实现如下:

-- -------------------- ---- -------
----------------------- ------ -
  -------------------------------------- --------------- -
    --- --- - ---------------- ---------
    ------------
    ---------- --- ------------ -- ----------------- ------ -- -
          -- --------------
          ------ ----------------------------------------------
        --- 
    --------- ------- -- ----- --------
    --------- ------- --- -- ----- --------
    -----
    -
  --
--

在这个自定义断言方法 arrayEqual 的实现中,首先获取了传入的数组。接着进行条件判断,如果两个数组长度不相同就抛出错误。然后使用了 obj.every() 方法判断数组中每一个值是否相等,如果每一个值都相等就通过测试,否则就抛出错误。

总结

在本文中,我们介绍了如何在 Chai 中添加自定义断言方法。要添加自定义断言方法主要分为两步,第一步是创建一个名为 chai.use() 的函数来声明自定义插件,第二步是在插件中定义自定义断言方法。实际上在 Chai 中添加自定义断言方法是十分方便的,只需要一个 chai.Assertion.addMethod() 方法就可以扩展 Chai 的断言功能。

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

纠错
反馈