介绍
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