Assert - a:actual e:expected m:message o:operator v:value b:block
assert.fail(a, e, m, o)
assert(v, m), assert.ok(v, [m])
assert.equal(a, e, [m])
assert.notEqual(a, e, [m])
assert.deepEqual(a, e, [m])
assert.notDeepEqual(a, e, [m])
assert.strictEqual(a, e, [m])
assert.notStrictEqual(a, e, [m])
assert.throws(b, [error], [m])
assert.doesNotThrow(b, [m])
assert.ifError(v)
assert.fail(a, e, m, o)

Throws an exception that displays the values for actual and expected separated by the provided operator.

Note: Always throws an exception and display the message which will be "actual operator expected" if it's omited.

e.g assert.fail(1,1,"Always throws this message","=") and assert.fail(1,1,"","+")

assert(v, [m]), assert.ok(v, [m])

Tests if value is truthy, it is equivalent to assert.equal(true, !!value, message);

Note: If the value isn't a truth-value, it throws and exception and display the message which will be "value == true" if it's omited.

e.g assert(0) and assert.ok(0,"Throws me")

assert.equal(a, e, [m])

Tests shallow, coercive equality with the equal comparison operator ( == ).

e.g assert.equal(1,2,"They are not equal") and assert.equal(1,1,"would not show me")

assert.notEqual(a, e, [m])

Tests shallow, coercive non-equality with the not equal comparison operator ( != ).

Note: 综上,是对比结果为false时抛出异常。

assert.deepEqual(a, e, [m])

Tests for deep equality.

Note: 采用以下步骤比较,只要一个步骤不匹配就抛出异常:

  1. 采用===比较;
  2. 比较他们是否是Buffers,如果是则比较长度,接下来每字节每字节比较;
  3. 用==比较;
  4. 最后如果参数是Object对象,则比较他们的属性长度和属性值
assert.notDeepEqual(a, e, [m])

Tests for any deep inequality.

assert.strictEqual(a, e, [m])

Tests strict equality, as determined by the strict equality operator ( === )

assert.notStrictEqual(a, e, [m])

Tests strict non-equality, as determined by the strict not equal operator ( !== )

assert.throws(b, [error], [m])

Expects block to throw an error. error can be constructor, RegExp or validation function.

Validate instanceof using constructor:

assert.throws(
function() {
throw new Error("Wrong value");
},
Error
);

Validate error message using RegExp:

assert.throws(
function() {
throw new Error("Wrong value");
},
/value/
);

Custom error validation:

assert.throws(
function() {
throw new Error("Wrong value");
},
function(err) {
if ( (err instanceof Error) && /value/.test(err) ) {
return true;
}
},
"unexpected error"
);
assert.doesNotThrow(b, [m])

Expects block not to throw an error, see assert.throws for details.

assert.ifError(v)

Tests if value is not a false value, throws if it is a true value. Useful when testing the first argument, error in callbacks.

Note: it throws error when the value is a truth-value!

Nodejs学习笔记——Assert(断言)的更多相关文章

  1. Nodejs学习笔记(四)——支持Mongodb

    前言:回顾前面零零碎碎写的三篇挂着Nodejs学习笔记的文章,着实有点名不副实,当然,这篇可能还是要继续走着离主线越走越远的路子,从简短的介绍什么是Nodejs,到如何寻找一个可以调试的Nodejs ...

  2. Nodejs学习笔记(三)——一张图看懂Nodejs建站

    前言:一条线,竖着放,如果做不到精进至深,那就旋转90°,至少也图个幅度宽广. 通俗解释上面的胡言乱语:还没学会爬,就学起走了?! 继上篇<Nodejs学习笔记(二)——Eclipse中运行调试 ...

  3. Nodejs学习笔记(二)——Eclipse中运行调试Nodejs

    前篇<Nodejs学习笔记(一)——初识Nodejs>主要介绍了在搭建node环境过程中遇到的小问题以及搭建Eclipse开发Node环境的前提步骤.本篇主要介绍如何在Eclipse中运行 ...

  4. NodeJS学习笔记之Connect中间件模块(一)

    NodeJS学习笔记之Connect中间件模块(一) http://www.jb51.net/article/60430.htm NodeJS学习笔记之Connect中间件模块(二) http://w ...

  5. Nodejs学习笔记(六)--- Node.js + Express 构建网站预备知识

    目录 前言 新建express项目并自定义路由规则 如何提取页面中的公共部分? 如何提交表单并接收参数? GET 方式 POST 方式 如何字符串加密? 如何使用session? 如何使用cookie ...

  6. Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例

    目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装项目其它需要包 清除冗余文件并重新规划项目目录 配置文件 规划示例路由,并新建相关文件 实现数据访问和业务逻辑相关方法 编写mys ...

  7. Nodejs学习笔记(十六)--- Pomelo介绍&入门

    目录 前言&介绍 安装Pomelo 创建项目并启动 创建项目 项目结构说明 启动 测试连接 聊天服务器 新建gate和chat服务器 配置master.json 配置servers.json ...

  8. [转]Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例

    本文转自:https://www.cnblogs.com/zhongweiv/p/nodejs_koa2_webapp.html 目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装 ...

  9. Nodejs学习笔记(十六)—Pomelo介绍&入门

    前言&介绍 Pomelo:一个快速.可扩展.Node.js分布式游戏服务器框架 从三四年前接触Node.js开始就接触到了Pomelo,从Pomelo最初的版本到现在,总的来说网易出品还算不错 ...

随机推荐

  1. C#面向对象 基础概念25个

    1.静态成员和非静态成员的区别?2.const 和 static readonly 区别?3.extern 是什么意思?4.abstract 是什么意思?5.internal 修饰符起什么作用?6.s ...

  2. Java和PHP在Web开发方面的比较

    比较 PHP和JSP这两个Web开发技术,在目前的情况是其实是比较PHP和Java的Web开发.以下是我就几个主要方面进行的比较: 一. 语言比较 PHP是解释执行的服务器脚本语言,首先php有简单容 ...

  3. hdu1004Let the Balloon Rise

    Problem Description Contest time again! How excited it is to see balloons floating around. But to te ...

  4. zoj 1078

    非常简单的题,没什么好说的.唯一值得一提的就是在判断是否是回文的时候只需遍历一半的元素即可,稍微提高一点性能. #include<iostream> using namespace std ...

  5. 贝叶斯网络基础(Probabilistic Graphical Models)

    本篇博客是Daphne Koller课程Probabilistic Graphical Models(PGM)的学习笔记. 概率图模型是一类用图形模式表达基于概率相关关系的模型的总称.概率图模型共分为 ...

  6. 仿淘宝TAB切换搜索框

    <div class="search"> <div id="searchBox"> <ul class="tab-bar ...

  7. zend studio 使用断点调试

    1, 下载 Xdebug 1 # 下载地址 2 # http://xdebug.org/download.php 3   4 # 寻找和自己所安装的 php 版本对应的 Xdebug 下载 5 # 对 ...

  8. InstallShield 工程类型installscript,如何覆盖安装?

    原文 http://www.cnblogs.com/daocaorenbx/p/3305162.html 开始使用的msi工程类型.网上找了资料, 在kevin的博客里找到这条方法 可以通过删除Exe ...

  9. Gradle DSL method not found: 'android()

    原文错误提示: Error:(16, 0) Gradle DSL method not found: 'android()'Possible causes:<ul><li>Th ...

  10. 从一个死锁看mysql innodb的锁机制

    背景及现象 线上生产环境在某些时候经常性的出现数据库操作死锁,导致业务人员无法进行操作.经过DBA的分析,是某一张表的insert操 作和delete操作发生了死锁.简单介绍下数据库的情况(因为涉及到 ...