Chai.js 中 expect().to.have.all.keys 如何使用

阅读时长 4 分钟读完

介绍

Chai.js 是一个流行的 JavaScript 断言库,它允许您编写易读、带有产生错误的测试。在本文中,我们将学习 Chai.js 中 expect().to.have.all.keys 的使用方法。

expect().to.have.all.keys 是 Chai.js 的一个可以用于断言对象的方法,它允许您验证对象属性的存在性(存在断言)和属性名列表的完整性(完整列表断言)。

使用方法

expect().to.have.all.keys 方法有两个参数:一个是期待的属性名列表(一个字符串表达式或一个字符串数组),另一个是可选的错误信息。

下面是一些典型的 expect().to.have.all.keys 的用法。

存在断言

对于一个查找对象中是否存在一个或多个特定属性的测试,您可以使用存在断言。下面是一个例子:

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

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

在第一个测试中,我们期望 obj 对象拥有 name 和 age 两个属性,这个测试通过了。在第二个测试中,我们期望 obj 对象拥有 age 和 gender 两个属性,这个测试也通过了。在第三个测试中,我们期望 obj 对象拥有 gender 属性,不过这个测试失败了。

完整列表断言

对于需要检查一个对象是否拥有一组特定唯一名称的属性的测试,您可以使用完整列表断言。下面是一个例子:

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

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

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

在第一个测试中,我们期望 obj1 对象拥有 name、age 和 gender 三个属性,因此测试通过了。在第二个测试中,我们期望 obj2 对象拥有 painting、firstName 和 lastName 三个属性,我们也不在乎属性的顺序,同样通过了。在最后一个测试中,虽然 obj2 对象拥有 firstName 和 lastName 两个属性,不过它也有一个 painting 属性,因此测试失败了。

可选的错误信息

您还可以选择将可选的错误信息作为 expect().to.have.all.keys 的第二个参数传递。例如:

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

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

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

在第一个测试中,我们在 obj 对象上期望一个有 5 个键的列表,这在测试无法通过时会抛出默认的错误信息。在第二个测试中,我们使用了可选的错误信息字符串,此时测试在失败时会抛出给定的错误信息。

结论

虽然这只是 Chai.js 的众多功能之一,但使用 expect().to.have.all.keys 方法还是很容易的。使用存在断言可以轻松地检查对象是否具有特定的属性,使用完整列表断言可以检查它是否具有一组特定唯一名称的属性。

同时,使用可选的错误信息参数表示您的测试用例可以更准确地执行,产生的错误信息也更容易确定失败原因。

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

纠错
反馈