assert模块是Node的内置模块,主要用于断定。如果表达式不符合预期,就抛出一个错误。该模块提供11个方法,但只有少数几个是常用的。

1.assert()

assert(value[, message])

assert.ok() 的别名,ok是assert方法的另一个名字,与assert方法完全一样。

assert方法接受两个参数,当第一个参数对应的布尔值为true时,不会有任何提示,返回undefined。当第一个参数对应的布尔值为false时,会抛出一个错误,该错误的提示信息就是第二个参数设定的字符串

// 格式
assert(value, message) // 例子
var assert = require('assert'); function add (a, b) {
return a + b;
} var expected = add(1,2);
assert( expected === 3, '预期1加2等于3');

上面代码不会有任何输出,因为assert方法的第一个参数是true。

assert( expected === 4, '预期1加2等于3')
// AssertionError: 预期1加2等于3

上面代码会抛出一个错误,因为assert方法的第一个参数是false。

2.assert.throws(block[, error][, message])

断定 block 函数抛出错误(通俗解释throws方法预期某个代码块会抛出一个错误,且抛出的错误符合指定的条件。)。

error 参数可以是构造函数、正则表达式、或自定义函数。

如果指定了 message 参数,则当 block 函数不抛出错误时,message 参数会作为 AssertionError 的错误信息。

 // 格式
assert.throws(block, [error], [message]) // 例一,抛出的错误符合某个构造函数
assert.throws(
function() {
throw new Error("Wrong value");
},
Error,
'不符合预期的错误类型'
); // 例二、抛出错误的提示信息符合正则表达式
assert.throws(
function() {
throw new Error("Wrong value");
},
/value/,
'不符合预期的错误类型'
); // 例三、抛出的错误符合自定义函数的校验
assert.throws(
function() {
throw new Error("Wrong value");
},
function(err) {
if ( (err instanceof Error) && /value/.test(err) ) {
return true;
}
},
'不符合预期的错误类型'
);

error 参数不能是字符串。 如果第二个参数是字符串,则视为省略 error 参数,传入的字符串会被用于 message 参数。 例如:

 // 这是错误的!不要这么做!
assert.throws(myFunction, '错误信息', '没有抛出期望的信息'); // 应该这么做。
assert.throws(myFunction, /错误信息/, '没有抛出期望的信息');

3.assert.doesNotThrow(block[, error][, message])

断定 block 函数不会抛出错误。

当 assert.doesNotThrow() 被调用时,它会立即调用 block 函数。

如果抛出错误且错误类型与 error 参数指定的相同,则抛出 AssertionError。 如果错误类型不相同,或 error 参数为 undefined,则抛出错误(通俗解释doesNotThrow方法与throws方法正好相反,预期某个代码块不抛出错误。)。

 // 格式
assert.doesNotThrow(block, [message]) // 用法
assert.doesNotThrow(
function() {
console.log("Nothing to see here");
},
'预期不抛出错误'
);

以下例子会抛出 TypeError,因为在断定中没有匹配的错误类型:

 assert.doesNotThrow(
() => {
throw new TypeError('错误信息');
},
SyntaxError
);

以下例子会抛出一个带有 Got unwanted exception (TypeError).. 信息的 AssertionError:因为错误类型相同

 assert.doesNotThrow(
() => {
throw new TypeError('错误信息');
},
TypeError
);

如果抛出了 AssertionError 且有给 message 参数传值,则 message 参数的值会被附加到 AssertionError 的信息中:

 assert.doesNotThrow(
() => {
throw new TypeError('错误信息');
},
TypeError,
'抛出错误'
);
// 抛出 AssertionError: Got unwanted exception (TypeError). 抛出错误

最新文章

  1. C# 统计在线人数和总访问人数
  2. docker理念:不可变基础设施
  3. js与jsp
  4. 手势抽取过程&代码复用
  5. 在JSP页面显示九九乘法表
  6. wpa_supplicant 连接成功后,如何配置wlan0与br0 协调上网
  7. 【实习记】2014-09-01从复杂到简单:一行命令区间查重+长整型在awk中的bug
  8. (Problem 22)Names scores
  9. 制造测试数据的程序及对拍程序概述(Like CyaRon)
  10. Django(三) ORM 数据库操作
  11. GIT入门文档
  12. CSS 表单
  13. python包管理之Pip安装及使用-1
  14. git命令收集(记得持续更新)
  15. tomcat安全加固和规范
  16. hdu 1541
  17. _findfirst和_findnext
  18. (转载)session token机制
  19. iOS 关于图片地理位置隐私信息的分析和读取
  20. 仔细讨论 C/C++ 字节对齐问题⭐⭐

热门文章

  1. MySQL常用代码
  2. POJ - 2195 Going Home 【KM】
  3. Mysql 导入实战
  4. SQl Server 中登录名 、用户、角色、概念一览
  5. hadoop集群增加新节点
  6. Mysql视图使用总结
  7. Qt之任务栏系统托盘图标
  8. 验证reg注册表的操作
  9. 几个常用的url生成二维码的接口
  10. Java丨JDK与JRE