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中exports与module.exports的区别详细介绍
Jan 14 NodeJs
NodeJS url验证(url-valid)的使用方法
Nov 18 NodeJs
nodejs npm包管理的配置方法及常用命令介绍
Jun 05 NodeJs
深入浅析NodeJs并发异步的回调处理
Dec 21 NodeJs
详解nodejs操作mongodb数据库封装DB类
Apr 10 NodeJs
NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解
May 13 NodeJs
Nodejs之http的表单提交
Jul 07 NodeJs
基于nodejs实现微信支付功能
Dec 20 NodeJs
详解nodejs通过响应回写的方式渲染页面资源
Apr 07 NodeJs
Nodejs + Websocket 指定发送及群聊的实现
Jan 09 NodeJs
浅谈vue websocket nodeJS 进行实时通信踩到的坑
Sep 22 NodeJs
NodeJS模块Buffer原理及使用方法解析
Nov 11 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
Zend Studio (eclipse)使用速度优化方法
2011/03/23 PHP
全面解读PHP的Yii框架中的日志功能
2016/03/17 PHP
Yii框架连接mongodb数据库的代码
2016/07/27 PHP
ThinkPHP框架实现数据增删改
2017/05/07 PHP
Use Word to Search for Files
2007/06/15 Javascript
javascript控制frame,iframe的src属性代码
2009/12/31 Javascript
javascript学习笔记(九)javascript中的原型(prototype)及原型链的继承方式
2011/04/12 Javascript
jQuery+css实现的蓝色水平二级导航菜单效果代码
2015/09/11 Javascript
快速掌握WordPress中加载JavaScript脚本的方法
2015/12/17 Javascript
AngularJS 执行流程详细介绍
2016/08/18 Javascript
AngularJs concepts详解及示例代码
2016/09/01 Javascript
AngularJS bootstrap启动详解及实例代码
2016/09/14 Javascript
js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前
2017/04/27 Javascript
利用js给datalist或select动态添加option选项的方法
2018/01/25 Javascript
JavaScript常用工具方法封装
2019/02/12 Javascript
VuePress 静态网站生成方法步骤
2019/02/14 Javascript
微信小程序实现卡片层叠滑动效果
2019/06/21 Javascript
vue vant中picker组件的使用
2020/11/03 Javascript
详解Vue 的异常处理机制
2020/11/30 Vue.js
vue 中this.$set 动态绑定数据的案例讲解
2021/01/29 Vue.js
利用selenium 3.7和python3添加cookie模拟登陆的实现
2017/11/20 Python
pandas object格式转float64格式的方法
2018/04/10 Python
python爬取指定微信公众号文章
2018/12/20 Python
python中将两组数据放在一起按照某一固定顺序shuffle的实例
2019/07/15 Python
Python 在OpenCV里实现仿射变换—坐标变换效果
2019/08/30 Python
Python3 ffmpeg视频转换工具使用方法解析
2020/08/10 Python
用python对oracle进行简单性能测试
2020/12/05 Python
详解CSS3中border-image的使用
2015/07/18 HTML / CSS
幼儿园教师辞职信
2014/01/18 职场文书
保证书范文大全
2014/04/28 职场文书
党员反对四风问题思想汇报
2014/09/12 职场文书
党员学习中共十八大思想报告
2014/09/12 职场文书
入党函调证明材料
2014/12/24 职场文书
北京故宫导游词
2015/01/31 职场文书
保研推荐信范文
2015/03/25 职场文书
2015年度校学生会工作总结报告
2015/05/23 职场文书