assert.doesNotThrow(fn[, error][, message])
fn
<Function>error
<RegExp> | <Function>message
<string>
断言 fn
函数不会抛出错误。
使用 assert.doesNotThrow()
实际上没有用处,因为捕获错误然后重新抛出它没有任何好处。
应该考虑在不应抛出错误的特定代码路径旁边添加注释,并尽可能保留错误消息。
当调用 assert.doesNotThrow()
时,它将立即调用 fn
函数。
如果抛出错误并且它与 error
参数指定的类型相同,则抛出 AssertionError
。
如果错误的类型不同,或者 error
参数未定义,则错误将传播回调用方。
如果指定,则 error
可以是 Class
、RegExp
或验证函数。
有关更多详细信息,请参见 assert.throws()
。
例如,以下示例将抛出 TypeError
,因为断言中没有匹配的错误类型:
assert.doesNotThrow(
() => {
throw new TypeError('错误值');
},
SyntaxError
);
以下示例将导致 AssertionError
,并显示消息 'Got unwanted exception...':
assert.doesNotThrow(
() => {
throw new TypeError('错误值');
},
TypeError
);
如果抛出 AssertionError
并为 message
参数提供了值,则 message
的值将附加到 AssertionError
消息:
assert.doesNotThrow(
() => {
throw new TypeError('错误值');
},
/错误值/,
'出错啦'
);
// AssertionError: Got unwanted exception: 出错啦
fn
<Function>error
<RegExp> | <Function>message
<string>
Asserts that the function fn
does not throw an error.
Using assert.doesNotThrow()
is actually not useful because there
is no benefit in catching an error and then rethrowing it. Instead, consider
adding a comment next to the specific code path that should not throw and keep
error messages as expressive as possible.
When assert.doesNotThrow()
is called, it will immediately call the fn
function.
If an error is thrown and it is the same type as that specified by the error
parameter, then an AssertionError
is thrown. If the error is of a
different type, or if the error
parameter is undefined, the error is
propagated back to the caller.
If specified, error
can be a Class
, RegExp
or a validation
function. See assert.throws()
for more details.
The following, for instance, will throw the TypeError
because there is no
matching error type in the assertion:
assert.doesNotThrow(
() => {
throw new TypeError('Wrong value');
},
SyntaxError
);
However, the following will result in an AssertionError
with the message
'Got unwanted exception...':
assert.doesNotThrow(
() => {
throw new TypeError('Wrong value');
},
TypeError
);
If an AssertionError
is thrown and a value is provided for the message
parameter, the value of message
will be appended to the AssertionError
message:
assert.doesNotThrow(
() => {
throw new TypeError('Wrong value');
},
/Wrong value/,
'Whoops'
);
// Throws: AssertionError: Got unwanted exception: Whoops