nodejs assert 模块
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). 抛出错误
nodejs assert 模块的更多相关文章
- nodejs事件模块
nodejs 事件模块 events 只有一个对象 EventEmitter . var EventEmitter = require('events').EventEmitter;var life ...
- 配置 Windows 下的 nodejs C++ 模块编译环境
根据 node-gyp 指示的 Windows 编译环境说明, 简单一句话就是 "Python + VC++ 编译环境". 所有需要的安装文件, 我都下载好放到百度云盘了: nod ...
- NodeJS http 模块
#4 NodeJS http 模块 工作目录 server.js var http = require('http'); var fs = require('fs'); var path = requ ...
- nodejs的模块系统(实例分析exprots和module.exprots)
前言:工欲善其事,必先利其器.模块系统是nodejs组织管理代码的利器也是调用第三方代码的途径,本文将详细讲解nodejs的模块系统.在文章最后实例分析一下exprots和module.exprots ...
- nodejs cluster模块初探
大家都知道nodejs是一个单进程单线程的服务器引擎,不管有多么的强大硬件,只能利用到单个CPU进行计算.所以,为了使用多核cpu来提高性能 就有了cluster,让node可以利用多核CPU实现并行 ...
- NodeJS Web模块
NodeJS Web模块 本文介绍nodeJS的http模块的基本用法,实现简单服务器和客户端 经典Web架构 Client:客户端一般指浏览器,通过HTTP协议向服务器发送请求(request) S ...
- 配置 Windows 下的 nodejs C++ 模块编译环境 安装 node-gyp
配置 Windows 下的 nodejs C++ 模块编译环境 根据 node-gyp 指示的 Windows 编译环境说明, 简单一句话就是 "Python + VC++ 编译环境&quo ...
- nodejs cheerio模块提取html页面内容
nodejs cheerio模块提取html页面内容 1. nodejs cheerio模块提取html页面内容 1.1. 找到目标元素 1.2. 美化文本输出 1.3. 提取答案文本 1.4. 最终 ...
- node assert模块 Study.1
1.assert() 大体理解意思:assert可以抽象理解为node中的alert++ assert模块是Node的内置模块,用于断言的作用,如果不是自己想要的就抛出错误 assert(arg1, ...
随机推荐
- HackerRank - camelcase 【字符串】
思路 找单词 第一个 单词 是小写 然后 后面的单词 第一位 都是大写 刚开始 初始化 ans = 1 然后 往后遍历 碰到 大写的 更新答案 AC代码 #include <cstdio> ...
- Android AbsoluteLayout绝对布局
绝对布局也叫坐标布局,指定元素的绝对位置,因为适应性很差,一般很少用到.可以使用RelativeLayout替代. 常用属性: android:layout_x --------组件x坐标 andro ...
- hdu 1701 (Binary Tree Traversals)(二叉树前序中序推后序)
Binary Tree Traversals T ...
- EntityFramework 学习 一 Disconnected Entities
如何把断开的实体添加到新的context上下文中 1.首先,我们需要把实体附加到新的context上下文实例中. 2.其次,手动的给实体设置适当的实体状态,因为新的context上下文不知道断开的实体 ...
- Netty入门例子
新建maven项目,添加依赖 <!-- https://mvnrepository.com/artifact/io.netty/netty-all --> <dependency&g ...
- java反射(二)
java的很多框架都是基于反射的.
- unity3D编辑器扩展
编辑器扩展只是在编辑项目中运行,发布出来是不会运行的. 固定创建一个文件夹Editor:所有的资源或者代码都不会被打包进去. 01.使用MenuItem添加菜单栏按钮 脚本不需要作为组件存在,可以不用 ...
- php 数组分页
$p = max(1, I('param.p',1,'intval')); $count = count($date); $Page = new Page($count,15); $Page-> ...
- Mybatis学习--动态SQL
学习笔记,选自Mybatis官方中文文档:http://www.mybatis.org/mybatis-3/zh/dynamic-sql.html MyBatis 的强大特性之一便是它的动态 SQL. ...
- BZOJ5324 JXOI2018 守卫
传送门 这是我见过的为数不多的良心九怜题之一 题目大意 给定一段$n$个点构成的折线,第$i$个折点的坐标是$(i,h_i)$,你可以在$i$点放置一个视野,定义$i$能看到$j$当且仅当$i$处有视 ...