如何使用 Chai 插件扩展其功能

阅读时长 9 min read

Chai 是一个流行的 JavaScript 测试框架,它使用简单且易于扩展。它提供了大量的断言库和插件,用于确保代码的可靠性和正确性。本文将介绍如何使用 Chai 插件扩展其功能,并提供一些例子。

安装和使用 Chai

首先,在使用 Chai 插件之前,您需要安装 Chai。安装可通过 Node.js 包管理器 npm 完成。

一旦安装,就可以在测试文件中导入 Chai。

接下来,您需要选择适合您项目的断言库,并将其与 Chai 配合使用。在本文中,我们将使用最流行的断言库之一 -- Expect.js

从此时起,您可以在测试文件中使用 Chai 库和下列断言库。

Chai 插件

Chai 提供了大量可用的函数和插件,以扩展其功能。以下是最常用的插件列表。

  • chai-spies
  • chai-json-schema
  • chai-as-promised
  • sinon-chai
  • chai-datetime
  • chai-jquery

chai-spies

chai-spies 是 Chai 一个非常流行的插件,用于同步和异步代码的模拟和假设。它提供了一个 spy() 函数,用于检查代码被正确调用的次数和参数。

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

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

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

在这个例子中,我们使用了 spy() 函数来检查 testFunc 函数是否被正确地调用。我们可以使用 .call() 函数来调用该函数并检查是否有被调用的参数。如果代码被正确调用,则语句 expect(spy).to.have.been.called.once 将会通过。

chai-json-schema

chai-json-schema 是一个用于验证 JSON 数据的 Chai 插件。它提供了一个 JSON schema,可用于验证 JSON 对象的结构和类型是否正确。

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

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

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

在此例中,我们使用 chai-json-schema 来验证 JSON 对象是否符合如下规则:

  • 对象具有名字和年龄属性。
  • 名字是字符串类型,年龄是数字类型。

如果数据符合声明的 JSON schema,在测试中应运行成功。

chai-as-promised

chai-as-promised 是一个用于测试异步代码的 Chai 插件。它提供了一些函数,用于测试 Promise 和回调函数等异步操作的结果是否符合预期。

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

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

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

在这个例子中,我们使用了 chai-as-promised 插件来测试 Promise 的返回值是否被正确解析。使用 .fulfilled 和 .rejected 函数在测试策略中来确保在代码正确执行时正确返回的数据。

sinon-chai

sinon-chai 是一个在 Chai 测试框架中集成 Sinon.JS 的插件。Sinon.JS 是一个流行的 JavaScript 仿真和测试框架。

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

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

在这个例子中,我们使用 sinon-chai 插件来检查对象的函数是否被正确调用。您可以在测试策略中使用 .calledOnce 方法来检查:

  • 代码是否被正确调用。
  • 调用次数是否是您所希望的(例如, .calledTwice 等)。
  • 函数参数是否在调用时被解析。

chai-datetime

chai-datetime 插件用于检查 JavaScript 中的日期创建和操作是否正确。它提供了一些函数,用于测试时间和日期数据是否符合预期。

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

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

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

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

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

在这个例子中,我们使用了 chai-datetime 插件来测试日期和时间数据是否正确。 您可以在测试策略中使用类似 .beforeDate 和 .equalDate 等方法,来检查日期和时间数据是否符合预期。

chai-jquery

chai-jquery 插件是用于检查网页和 DOM 元素的 Chai 插件。它可用于测试页面中的网页元素是否符合预期。

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

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

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

在这个例子中,我们使用了 chai-jquery 插件来测试 jQuery DOM 元素的属性。 您可以在测试策略中使用类似 .attr 等方法,来检查页面中的元素是否符合预期。

小结

Chai 是一个流行的 JavaScript 测试框架,提供了许多内置和扩展功能的库和插件。本文介绍了 Chai 的一些常用插件和用法,它们可用于测试代码和数据的可靠性和正确性。我们希望这篇文章能够帮助您更好地使用 Chai 和其中的扩展功能。

Source: FunTeaLearn,Please indicate the source for reprints https://funteas.com/post/67d7845ba941bf7134d795a9

Feed
back