简介
chai-changes 是一个基于 chai 的 npm 包,用于测试对象的属性变化。使用 chai-changes 可以轻松地对对象的属性变化进行断言和测试。
安装
在使用 chai-changes 之前,需要先安装 Node.js 和 npm。然后可以通过以下命令来安装 chai-changes:
--- ------- ------------ ----------
基本用法
chai-changes 提供了两种方式来测试对象的属性变化:changes
和 doesNotChange
。
changes
changes
方法用于断言对象的属性发生了变化。它接受两个参数:要测试的函数和要测试的属性名。例如:
----- - ------ - - ---------------- ----- -------- - - ------ - -- -------- ---------------- - -------------- -- -- - ------------------------------------------ ---------
在上面的例子中,我们定义了一个名为 incrementValue
的函数,它将 myObject
对象的 value
属性加 1。然后我们使用 chai-changes 的 changes
方法来测试 myObject
的 value
属性是否有变化。
doesNotChange
与 changes
相反,doesNotChange
方法用于断言对象的属性未发生变化。它也接受两个参数:要测试的函数和要测试的属性名。例如:
----- - ------ - - ---------------- ----- -------- - - ------ - -- -------- ----------- - -- -- ------- - ----------------------------------------- ---------
在上面的例子中,我们定义了一个名为 doNothing
的函数,它什么也不做。然后我们使用 chai-changes 的 doesNotChange
方法来测试 myObject
的 value
属性是否有变化。
进阶用法
除了基本用法外,chai-changes 还提供了一些进阶用法,可以帮助你更加灵活地测试对象的属性变化。
精确匹配
默认情况下,chai-changes 使用松散相等运算符(==)来匹配属性值。例如:
----- - ------ - - ---------------- ----- -------- - - ------ --- -- -------- ---------------- - -------------- -- -- - ------------------------------------------ ---------
在上面的例子中,chai-changes 会认为 '1' + 1
等于 '11'
,因此不会报错。如果要使用精确匹配,可以通过将第三个参数设置为 true
来实现。例如:
----- - ------ - - ---------------- ----- -------- - - ------ --- -- -------- ---------------- - -------------- -- -- - ------------------------------------------ -------- ------
在上面的例子中,chai-changes 会认为 '1' + 1
不等于 '11'
,因此会报错。
异常情况
如果要测试的函数抛出异常,chai-changes 会默认认为对象的属性未发生变化。例如:
----- - ------ - - ---------------- ----- -------- - - ------ - -- -------- ------------ - ----- --- -------- - ------------------------------------------ ---------
在上面的例子中,chai-changes 会认为 throwError
抛出异常后对象的属性未发生变化。如果要忽略异常情况,可以将第四个参数设置为 true
。例如:
----- - ------ - - ---------------- ----- -------- - - ------ - -- -------- ------------ - ----- --- -------- - ------------------------------------------ -------- ------ ------
在上面的例子中,chai-changes 会忽略 throwError
抛出的异常,
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/47369