如何在 Chai 中生成自定义的 assertions 断言

阅读时长 4 分钟读完

前言

Chai 是一个流行的 JavaScript 测试库,它提供了多种断言风格,可以帮助我们编写更加简洁、可读性更高的测试代码。但是,有时候我们可能需要自定义一些断言函数来满足特定的测试需求。本文将介绍如何在 Chai 中生成自定义的 assertions 断言。

Chai 的断言风格

Chai 支持三种不同的断言风格:should、expect 和 assert。它们的使用方式分别如下:

should

expect

assert

自定义 assertions

Chai 允许我们自定义 assertions,以便我们能够编写自己的测试代码。自定义 assertions 的定义方式如下:

其中,name 是自定义断言的名称,method 是一个函数,它接受断言对象的值作为参数,并返回一个布尔值,表示断言是否成功。

例如,我们可以定义一个自定义断言 isEven,用于判断一个数字是否为偶数:

在上面的代码中,我们使用 addMethod 方法定义了一个名为 isEven 的自定义断言,它接受一个数字作为参数。在断言函数中,我们使用 this._obj 获取断言对象的值,并使用 this.assert 方法进行断言。如果断言成功,则什么都不会发生;否则,会抛出一个 AssertionError。

现在我们可以在测试代码中使用 isEven 断言了:

自定义断言的链式调用

Chai 还允许我们在自定义断言中使用链式调用,以便编写更加简洁、可读性更高的测试代码。例如,我们可以定义一个自定义断言 isDivisibleBy,用于判断一个数字是否能够被另一个数字整除:

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

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

在上面的代码中,我们使用 addMethod 方法定义了一个名为 isDivisibleBy 的自定义断言,它接受一个数字作为参数。在断言函数中,我们使用 this._obj 获取断言对象的值,并使用 this.assert 方法进行断言。如果断言成功,则什么都不会发生;否则,会抛出一个 AssertionError。在断言函数的第四个参数中,我们将 divisor 作为参数传递给了 this.assert 方法,以便在错误信息中显示它的值。

现在我们可以在测试代码中使用 isDivisibleBy 断言了:

总结

本文介绍了如何在 Chai 中生成自定义的 assertions 断言。我们首先了解了 Chai 的三种不同的断言风格,然后介绍了如何使用 addMethod 方法定义自定义断言,最后介绍了如何在自定义断言中使用链式调用。通过本文的学习,我们可以编写更加简洁、可读性更高的测试代码,提高测试代码的质量和可维护性。

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

纠错
反馈