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 相关文章推荐
NodeJS创建基础应用并应用模板引擎
Apr 12 NodeJs
async/await与promise(nodejs中的异步操作问题)
Mar 03 NodeJs
nodejs入门教程六:express模块用法示例
Apr 24 NodeJs
详解Windows下安装Nodejs步骤
May 18 NodeJs
深入解析nodejs HTTP服务
Jul 25 NodeJs
Nodejs实现文件上传的示例代码
Sep 26 NodeJs
nodejs实现爬取网站图片功能
Dec 14 NodeJs
nodejs使用http模块发送get与post请求的方法示例
Jan 08 NodeJs
nodejs爬虫初试superagent和cheerio
Mar 05 NodeJs
详解Nodejs mongoose
Jun 10 NodeJs
nodejs微信开发之接入指南
Mar 17 NodeJs
分享五个Node.js开发的优秀实践 
Apr 07 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 获取MySQL数据库里所有表的实现代码
2011/07/13 PHP
php程序总是提示验证码输入有误解决方案
2015/01/07 PHP
php多文件打包下载的实例代码
2017/07/12 PHP
替代window.event.srcElement效果的可兼容性的函数
2009/12/18 Javascript
对字符串进行HTML编码和解码的JavaScript函数
2010/02/01 Javascript
面向对象的Javascript之一(初识Javascript)
2012/01/20 Javascript
js 获取class的元素的方法 以及创建方法getElementsByClassName
2013/03/11 Javascript
javascript获取鼠标位置部分的实例代码(兼容IE,FF)
2013/08/05 Javascript
js 时间格式与时间戳的相互转换示例代码
2013/12/25 Javascript
jquery实现的鼠标拖动排序Li或Table
2014/05/04 Javascript
JavaScript DOM基础
2015/04/13 Javascript
AngularJS仿苹果滑屏删除控件
2016/01/18 Javascript
关于动态生成dom绑定事件失效的原因及解决方法
2016/08/06 Javascript
Node.js的环境安装配置(使用nvm方式)
2016/10/11 Javascript
bootstrap轮播图示例代码分享
2017/05/17 Javascript
AngularJS自定义指令实现面包屑功能完整实例
2017/05/17 Javascript
JavaScript实现重力下落与弹性效果的方法分析
2017/12/20 Javascript
解决JS表单验证只有第一个IF起作用的问题
2018/12/04 Javascript
详解Vue.js自定义tipOnce指令用法实例
2018/12/19 Javascript
大转盘抽奖小程序版 转盘抽奖网页版
2020/04/16 Javascript
Vue 权限控制的两种方法(路由验证)
2019/08/16 Javascript
js实现时分秒倒计时
2019/12/03 Javascript
Python 字符串与二进制串的相互转换示例
2018/07/23 Python
python使用response.read()接收json数据的实例
2018/12/19 Python
浅谈PySpark SQL 相关知识介绍
2019/06/14 Python
Python pickle模块实现对象序列化
2019/11/22 Python
如何在Django中使用聚合的实现示例
2020/03/23 Python
CSS3按钮鼠标悬浮实现光圈效果源码
2016/09/11 HTML / CSS
Urban Outfitters美国官网:美国生活方式品牌
2016/08/26 全球购物
洛杉矶时尚女装系列:J.ING US
2019/03/17 全球购物
开水果连锁店创业计划书
2013/12/29 职场文书
吨的认识教学反思
2014/04/27 职场文书
预防煤气中毒方案
2014/06/16 职场文书
2014年党支部书记工作总结
2014/12/04 职场文书
我们的节日重阳节活动总结
2015/03/24 职场文书
python和C/C++混合编程之使用ctypes调用 C/C++的dll
2022/04/29 Python