Chai 是一个流行的 JavaScript 测试框架,它使用简单且易于扩展。它提供了大量的断言库和插件,用于确保代码的可靠性和正确性。本文将介绍如何使用 Chai 插件扩展其功能,并提供一些例子。
安装和使用 Chai
首先,在使用 Chai 插件之前,您需要安装 Chai。安装可通过 Node.js 包管理器 npm 完成。
npm install chai --save-dev
一旦安装,就可以在测试文件中导入 Chai。
const chai = require('chai');接下来,您需要选择适合您项目的断言库,并将其与 Chai 配合使用。在本文中,我们将使用最流行的断言库之一 -- Expect.js。
const expect = require('chai').expect;
chai.use(require('chai-expect'));从此时起,您可以在测试文件中使用 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