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实现黑名单中间件设计
Jun 17 NodeJs
轻松创建nodejs服务器(2):nodejs服务器的构成分析
Dec 18 NodeJs
浅谈Nodejs观察者模式
Oct 13 NodeJs
nodejs处理图片的中间件node-images详解
May 08 NodeJs
浅析 NodeJs 的几种文件路径
Jun 07 NodeJs
nodejs使用express获取get和post传值及session验证的方法
Nov 09 NodeJs
详解IWinter 一个路由转控制器的 Nodejs 库
Nov 15 NodeJs
详解Nodejs内存治理
May 13 NodeJs
解决nodejs的npm命令无反应的问题
May 17 NodeJs
Nodejs实现爬虫抓取数据实例解析
Jul 05 NodeJs
nodejs和react实现即时通讯简易聊天室功能
Aug 21 NodeJs
如何利用nodejs自动定时发送邮件提醒(超实用)
Dec 01 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实现仿写CodeIgniter的购物车类
2015/07/29 PHP
thinkphp表单上传文件并将文件路径保存到数据库中
2016/07/28 PHP
PHP连接MySQL数据库操作代码实例解析
2020/07/11 PHP
javascript cookies操作集合
2010/04/12 Javascript
使用Json比用string返回数据更友好,也更面向对象一些
2011/09/13 Javascript
jQuery:节点(插入,复制,替换,删除)操作
2013/03/04 Javascript
JQuery性能优化的几点建议
2014/05/14 Javascript
用jquery的方法制作一个简单的导航栏
2014/06/23 Javascript
推荐8款jQuery轻量级树形Tree插件
2014/11/12 Javascript
jqueryUI里拖拽排序示例分析
2015/02/26 Javascript
浅谈react.js 之 批量添加与删除功能
2017/04/17 Javascript
Vue2.0基于vue-cli+webpack同级组件之间的通信教程(推荐)
2017/09/14 Javascript
浅谈从React渲染流程分析Diff算法
2018/09/08 Javascript
javascript面向对象三大特征之多态实例详解
2019/07/24 Javascript
解决layui的使用以及针对select、radio等表单组件不显示的问题
2019/09/05 Javascript
vue动态设置页面title的方法实例
2020/08/23 Javascript
[03:08]TI9战队档案 - Vici Gaming
2019/08/20 DOTA
Python Socket编程入门教程
2014/07/11 Python
python中MySQLdb模块用法实例
2014/11/10 Python
Python生成随机MAC地址
2015/03/10 Python
在Python的while循环中使用else以及循环嵌套的用法
2015/10/14 Python
Python3安装Pymongo详细步骤
2017/05/26 Python
Pytorch 实现冻结指定卷积层的参数
2020/01/06 Python
flask 框架操作MySQL数据库简单示例
2020/02/02 Python
python3 使用ssh隧道连接mysql的操作
2020/12/05 Python
详解CSS3新增的背景属性
2019/12/25 HTML / CSS
资生堂美国官网:Shiseido美国
2016/09/02 全球购物
北美领先的智能产品购物网站:Wellbots
2018/06/11 全球购物
运动鞋、街头服装、手表和手袋的实时市场:StockX
2020/11/25 全球购物
初三班主任寄语大全
2014/04/04 职场文书
寄语是什么意思
2014/04/10 职场文书
校车司机安全责任书
2015/05/11 职场文书
运动会开幕式主持词
2015/07/01 职场文书
2019最新版试用期劳动合同模板!
2019/07/04 职场文书
浅谈移动端中的视口(viewport)的具体使用
2021/04/13 HTML / CSS
javascript的var与let,const之间的区别详解
2022/02/18 Javascript