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获取本机内网和外网ip地址的实现代码
Jun 01 NodeJs
Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
Jan 01 NodeJs
nodejs导出excel的方法
Jun 30 NodeJs
nodejs的压缩文件模块archiver用法示例
Jan 18 NodeJs
nodejs开发微信小程序实现密码加密
Jul 11 NodeJs
nodejs body-parser 解析post数据实例
Jul 26 NodeJs
NodeJs通过async/await处理异步的方法
Oct 09 NodeJs
nodejs图片处理工具gm用法小结
Dec 12 NodeJs
Nodejs处理异常操作示例
Dec 25 NodeJs
nodejs读取图片返回给浏览器显示
Jul 25 NodeJs
NodeJS http模块用法示例【创建web服务器/客户端】
Nov 05 NodeJs
NodeJs crypto加密制作token的实现代码
Nov 15 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将字符串转换成16进制的方法
2015/03/17 PHP
php编程实现简单的网页版计算器功能示例
2017/04/26 PHP
js实现图片放大缩小功能后进行复杂排序的方法
2012/11/08 Javascript
JavaScript创建类/对象的几种方式概述及实例
2013/05/06 Javascript
Bootstrap中CSS的使用方法
2016/02/17 Javascript
Vue.js基础知识汇总
2016/04/27 Javascript
微信开发 JS-SDK 6.0.2 经常遇到问题总结
2016/12/08 Javascript
拖动时防止选中
2017/02/03 Javascript
解读vue生成的文件目录结构及说明
2017/11/27 Javascript
vue中echarts3.0自适应的方法
2018/02/26 Javascript
vue的安装及element组件的安装方法
2018/03/09 Javascript
详解组件库的webpack构建速度优化
2018/06/18 Javascript
前端axios下载excel文件(二进制)的处理方法
2018/07/31 Javascript
angular6.x中ngTemplateOutlet指令的使用示例
2018/08/09 Javascript
微信小程序蓝牙连接小票打印机实例代码详解
2019/06/03 Javascript
jQuery 筛选器简单操作示例
2019/10/02 jQuery
[40:13]Ti4 冒泡赛第二天 iG vs NEWBEE 2
2014/07/15 DOTA
基于ID3决策树算法的实现(Python版)
2017/05/31 Python
pygame 精灵的行走及二段跳的实现方法(必看篇)
2017/07/10 Python
Python3.6连接Oracle数据库的方法详解
2018/05/18 Python
Python matplotlib绘制饼状图功能示例
2019/09/10 Python
在notepad++中实现直接运行python代码
2019/12/18 Python
Pytorch转keras的有效方法,以FlowNet为例讲解
2020/05/26 Python
HTML5拖放效果的实现代码
2016/11/17 HTML / CSS
HTML5+CSS3:3D展示商品信息示例
2017/01/03 HTML / CSS
英国最大线上综合鞋类商城:Office
2017/12/08 全球购物
美国在线咖啡、茶和餐厅供应商:LollicupStore
2018/05/04 全球购物
BASIC HOUSE官方旗舰店:韩国著名的服装品牌
2018/09/27 全球购物
美国单身专业人士在线约会网站:EliteSingles
2019/03/19 全球购物
Chain Reaction Cycles俄罗斯:世界上最大的在线自行车商店
2019/08/27 全球购物
Linux管理员面试经常问道的相关命令
2014/12/12 面试题
外贸业务员求职自荐信分享
2013/09/21 职场文书
课程设计心得体会
2013/12/28 职场文书
消防安全检查制度
2014/02/04 职场文书
化工工艺设计求职信
2014/06/25 职场文书
祖国在我心中演讲稿(小学生)
2014/09/23 职场文书