在前端开发中,测试是非常重要的一环。而在 JavaScript 中,Chai.js 是一个非常流行的测试库。其中,assert.throw 和 assert.doesNotThrow 断言是非常常用的测试方法。本文将详细介绍这两种方法的使用方法和注意事项,并提供示例代码。
assert.throw
assert.throw 方法用于测试一个函数是否会抛出一个错误。它的基本语法如下:
assert.throw(fn [, err] [, msg])
其中,fn 是要测试的函数,err 是期望的错误类型或错误信息,msg 是测试失败时的提示信息。
下面是一个示例代码:
-- -------------------- ---- -------
-------- --------- -- -
-- -- --- -- -
----- --- ----------------
-
------ - - --
-
------------------ ---------- -
---------- ----- -- ----- ---- --- ------- -- --- ---------- -
----------------------- -
--------- ---
-- ------ ----------
---
---在这个示例中,我们定义了一个 divide 函数,它会抛出一个错误,当除数为0时。然后我们使用 assert.throw 方法来测试这个函数是否会抛出一个 Error 类型的错误,并且错误信息为“除数不能为0”。
需要注意的是,err 参数既可以是一个错误类型,也可以是一个错误信息。如果 err 参数是一个错误类型,那么 assert.throw 方法会检查抛出的错误是否是这个类型的实例。如果 err 参数是一个错误信息,那么 assert.throw 方法会检查抛出的错误信息是否包含这个字符串。
assert.doesNotThrow
assert.doesNotThrow 方法用于测试一个函数是否不会抛出错误。它的基本语法如下:
assert.doesNotThrow(fn [, err] [, msg])
其中,fn 是要测试的函数,err 是期望的错误类型或错误信息,msg 是测试失败时的提示信息。
下面是一个示例代码:
-- -------------------- ---- -------
-------- ------ -- -
-- ------- - --- -------- -- ------ - --- --------- -
----- --- -----------------
-
------ - - --
-
--------------- ---------- -
---------- --- ----- -- ----- ---- --- ---------- --- --------- ---------- -
------------------------------ -
------ ---
-- ------ -----------
---
---在这个示例中,我们定义了一个 add 函数,它会抛出一个错误,当参数不是数字时。然后我们使用 assert.doesNotThrow 方法来测试这个函数是否不会抛出一个 Error 类型的错误,并且错误信息为“参数必须是数字”。
需要注意的是,err 参数的作用和 assert.throw 方法中的 err 参数是相反的。如果 err 参数是一个错误类型,那么 assert.doesNotThrow 方法会检查函数是否不会抛出这个类型的错误。如果 err 参数是一个错误信息,那么 assert.doesNotThrow 方法会检查函数是否不会抛出包含这个字符串的错误信息。
总结
assert.throw 和 assert.doesNotThrow 是 Chai.js 中非常常用的测试方法,它们可以帮助我们测试一个函数是否会抛出或不会抛出错误。在使用这两种方法时,需要注意 err 参数的作用和使用方法。除此之外,我们还需要注意测试代码的可读性和可维护性,以便更好地进行测试和开发工作。
Source: FunTeaLearn,Please indicate the source for reprints https://funteas.com/post/6583ea79d2f5e1655deb6cd0