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服务器(3):代码模块化
Dec 18 NodeJs
nodejs实现获取某宝商品分类
May 28 NodeJs
windows 下安装nodejs 环境变量设置
Feb 02 NodeJs
nodejs使用express创建一个简单web应用
Mar 31 NodeJs
nodejs发送http请求时遇到404长时间未响应的解决方法
Dec 10 NodeJs
nodejs搭建本地服务器轻松解决跨域问题
Mar 21 NodeJs
原生nodejs使用websocket代码分享
Apr 07 NodeJs
Nodejs 和 Electron ubuntu下快速安装过程
May 04 NodeJs
Nodejs中怎么实现函数的串行执行
Mar 02 NodeJs
详解NodeJS Https HSM双向认证实现
Mar 12 NodeJs
Nodejs文件上传、监听上传进度的代码
Mar 27 NodeJs
一文秒懂nodejs中的异步编程
Jan 28 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
10条PHP高级技巧[修正版]
2011/08/02 PHP
比较详细PHP生成静态页面教程
2012/01/10 PHP
使用 PHPStorm 开发 Laravel
2015/03/24 PHP
PHPExcel笔记, mpdf导出
2016/05/03 PHP
php实现构建排除当前元素的乘积数组方法
2018/10/06 PHP
Javascript 汉字字节判断
2009/08/01 Javascript
JQuery Tips(4) 一些关于提高JQuery性能的Tips
2009/12/19 Javascript
functional继承模式 摘自javascript:the good parts
2011/06/20 Javascript
nodejs教程之环境安装及运行
2014/11/21 NodeJs
Node.js中的流(Stream)介绍
2015/03/30 Javascript
jquery zTree异步加载、模糊搜索简单实例分享
2016/03/24 Javascript
jQuery获取cookie值及删除cookie用法实例
2016/04/15 Javascript
图文详解JavaScript的原型对象及原型链
2016/08/02 Javascript
详解a标签添加onclick事件的几种方式
2019/03/29 Javascript
详解微信小程序文件下载--视频和图片
2019/04/24 Javascript
Angular 2使用路由自定义弹出组件toast操作示例
2019/05/10 Javascript
vue实现计步器功能
2019/11/01 Javascript
vue打包静态资源后显示空白及static文件路径报错的解决
2020/09/02 Javascript
python实现通过shelve修改对象实例
2014/09/26 Python
Python函数中定义参数的四种方式
2014/11/30 Python
python2.7实现复制大量文件及文件夹资料
2019/08/31 Python
python加密解密库cryptography使用openSSL生成的密匙加密解密
2020/02/11 Python
Python 实现简单的客户端认证
2020/07/29 Python
检测浏览器是否支持html5视频的代码
2013/03/28 HTML / CSS
五个2015 年最佳HTML5 框架
2015/11/11 HTML / CSS
html5中的一些标签学习(心得)
2016/10/18 HTML / CSS
德国前卫设计师时装在线商店:Luxury Loft
2019/11/04 全球购物
哥德堡通行证:Gothenburg Pass
2019/12/09 全球购物
搞笑征婚广告词
2014/03/17 职场文书
纪念9.18事变演讲稿
2014/09/14 职场文书
党员自评材料范文
2014/12/17 职场文书
大学生心理健康活动总结
2015/05/08 职场文书
2015年教师业务工作总结
2015/05/26 职场文书
边城读书笔记
2015/06/29 职场文书
为什么阅读对所有年龄段的孩子都很重要?
2019/07/08 职场文书
Javascript中async与await的捕捉错误详解
2022/03/03 Javascript