nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比较


Posted in NodeJs onSeptember 18, 2017

1、equal()

equal(actual,expected[,message])

相当于使用 == 运算符比较两个参数值actual和expected是否相等,如果相等不返回任何值,如果不相等则返回带有message属性的AssertionError,若message为undefined,则为默认的错误信息。

var assert = require('assert');
assert.equal('1','1');//通过 '1' == '1'
assert.equal('1',1);//通过,'1' == 1
assert.equal('q','q');//通过
assert.equal('abc','abc');//通过 
assert.equal('a','b');//不通过,抛出AssertionError
assert.equal([1,2],[1,2]);//不通过,不能比较数组
assert.equal({a:'string'},{a:'string'});//不通过,不能比较json数据等

== 运算符只是数值相等,并不比较类型相等
equal()方法不能比较数组,json等数据类型的数据,换句话说即不进行深度比较,数组和json数据的子对象不进行比较。

2、strictEqual()

strictEqual(actual,expected[,message])

从字面意思来看,就是equal()方法的严格版本,相当于===全等运算符,不仅比较数据值是否相等,还比较数据类型是否相同。跟equal()方法最大的不同就是这点。

var assert = require('assert');
assert.strictEqual('1',1);//不通过
assert.strictEqual(1,1);//通过 
assert.strictEqual('a','a');//通过
assert.equal('abc','abc');//通过 
assert.equal('a','b');//不通过,抛出AssertionError
assert.equal([1,2],[1,2]);//不通过,不能比较数组
assert.equal({a:'string'},{a:'string'});//不通过,不能比较json数据等

可以看到,这跟equal()方法得出的结果是不同的,比较要严格一些,其他地方都相同。

3 deepEqual()

deepEqual(actual,expected[,message])

前面不管是equal()方法还是strictEqual()都不能进行深度比较,对数组或者json数据格式的数据不能比较相同与否,使用此方法将可以完美解决这个问题。

var assert = require('assert');
assert.deepEqual([1,2],[1,2]);//通过,数组比较
assert.deepEqual({a:'1'},{a:'1'});//通过
assert.deepEqual([[1,2],[2]],[[1,2],[2]]);//通过,多维数组
assert.deepEqual({a:{b:1}},{a:{b:1}});//通过
assert.deepEqual(1,'1');//通过
assert.deepEqual([1],['1']);//通过

deepEqual()方法能够比较数组和json等数据,也能比较一般数据,能够进行更为深层次的数据比较。
deepEqual()方法比较并不严格,相当于 == 等于符号,只比较数值,不比较类型

4 strictDeepEqual()

strictDeepEqual(actual,expected[,message])
跟strictEqual()方法相似,相当于=== 全等运算符,不同的是能够比较数组、json数据等深层的数据。

var assert = require('assert');
assert.deepEqual([1,2],[1,2]);//通过,数组比较
assert.deepEqual({a:'1'},{a:'1'});//通过
assert.deepEqual([[1,2],[2]],[[1,2],[2]]);//通过,多维数组
assert.deepEqual({a:{b:1}},{a:{b:1}});//通过
assert.deepEqual(1,'1');//不通过,类型错误
assert.deepEqual([1],['1']);//不通过 ,类型错误

deepStrictEqual()方法比deepEqual()更为严格,其他都相同。都能进行深层比较。

5 其他方法

assert模块中还有很多其他很有用的方法,下面列举几个,具体的请看

Nodejs API

assert.notEqual(actual,expected[,message])
assert.notStrictEqual(actual,expected[message])
assert.ifError(value)
assert.fail(message)

NodeJs 相关文章推荐
golang、python、php、c++、c、java、Nodejs性能对比
Mar 12 NodeJs
跟我学Nodejs(二)--- Node.js事件模块
May 21 NodeJs
轻松创建nodejs服务器(7):阻塞操作的实现
Dec 18 NodeJs
NodeJS学习笔记之FS文件模块
Jan 13 NodeJs
NodeJs基本语法和类型
Feb 13 NodeJs
nodejs简单实现中英文翻译
May 04 NodeJs
Nodejs+Socket.io实现通讯实例代码
Feb 13 NodeJs
详解nodeJS之路径PATH模块
May 31 NodeJs
nodejs中函数的调用实例详解
Oct 31 NodeJs
浅谈vue websocket nodeJS 进行实时通信踩到的坑
Sep 22 NodeJs
NodeJS模块Buffer原理及使用方法解析
Nov 11 NodeJs
node快速搭建后台的实现步骤
Feb 18 NodeJs
Nodejs+express+ejs简单使用实例代码
Sep 18 #NodeJs
详解nodejs中express搭建权限管理系统
Sep 15 #NodeJs
nodejs socket服务端和客户端简单通信功能
Sep 14 #NodeJs
ubuntu编译nodejs所需的软件并安装
Sep 12 #NodeJs
nodejs对express中next函数的一些理解
Sep 08 #NodeJs
nodejs 图解express+supervisor+ejs的用法(推荐)
Sep 08 #NodeJs
nodejs创建简易web服务器与文件读写的实例
Sep 07 #NodeJs
You might like
开发大型 PHP 项目的方法
2007/01/02 PHP
第三章 php操作符与控制结构代码
2011/12/30 PHP
PHP中的表达式简述
2016/05/29 PHP
[原创]php求圆周率的简单实现方法
2016/05/30 PHP
laravel 之 Eloquent 模型修改器和序列化示例
2019/10/17 PHP
JQuery实现简单验证码提示解决方案
2012/12/20 Javascript
js解析与序列化json数据(三)json的解析探讨
2013/02/01 Javascript
微信QQ的二维码登录原理js代码解析
2016/06/23 Javascript
JavaScript运动框架 链式运动到完美运动(五)
2017/05/18 Javascript
基于vue+element实现全局loading过程详解
2020/07/10 Javascript
vue中的v-model原理,与组件自定义v-model详解
2020/08/04 Javascript
vue-router 控制路由权限的实现
2020/09/24 Javascript
[38:39]完美世界DOTA2联赛循环赛 IO vs GXR BO2第二场 11.04
2020/11/05 DOTA
Python实现字符串格式化的方法小结
2017/02/20 Python
python3通过selenium爬虫获取到dj商品的实例代码
2019/04/25 Python
详解Python3中setuptools、Pip安装教程
2019/06/18 Python
Django实现任意文件上传(最简单的方法)
2020/06/03 Python
python使用QQ邮箱实现自动发送邮件
2020/06/22 Python
魔幻般冒泡背景的CSS3按钮动画
2016/02/27 HTML / CSS
HTML5 History API 实现无刷新跳转
2016/01/11 HTML / CSS
h5实现获取用户地理定位的实例代码
2017/07/17 HTML / CSS
Ray-Ban雷朋美国官网:全球领先的太阳眼镜品牌
2016/07/20 全球购物
英国蜡烛、蜡烛配件和家居香氛购买网站:Yankee Candle
2018/12/12 全球购物
美国女士内衣在线折扣商店:One Hanes Place
2019/03/24 全球购物
大学军训通讯稿
2014/01/13 职场文书
医药营销个人求职信范文
2014/02/07 职场文书
高中语文课后反思
2014/04/27 职场文书
电台编导求职信
2014/05/06 职场文书
小学优秀班集体申报材料
2014/05/25 职场文书
群众路线个人对照检查材料
2014/09/23 职场文书
事业单位个人查摆问题及整改措施
2014/10/28 职场文书
煤矿百日安全活动总结
2015/05/07 职场文书
地道战观后感2000字
2015/06/04 职场文书
红白喜事主持词
2015/07/06 职场文书
2015年信息技术教研组工作总结
2015/07/22 职场文书
史上最全书信经典范文大全(建议收藏)
2019/07/10 职场文书