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之请求路由概述
Jul 05 NodeJs
NodeJS学习笔记之FS文件模块
Jan 13 NodeJs
nodejs搭建本地http服务器教程
Mar 13 NodeJs
nodejs个人博客开发第四步 数据模型
Apr 12 NodeJs
NodeJs的fs读写删除移动监听
Apr 28 NodeJs
nodejs制作爬虫实现批量下载图片
May 19 NodeJs
NodeJS链接MySql数据库的操作方法
Jun 27 NodeJs
详解HTTPS 的原理和 NodeJS 的实现
Jul 04 NodeJs
Windows下快速搭建NodeJS本地服务器的步骤
Aug 09 NodeJs
Nodejs使用Mongodb存储与提供后端CRD服务详解
Sep 04 NodeJs
手把手教你如何使用nodejs编写cli命令行
Nov 05 NodeJs
nodejs基础之常用工具模块util用法分析
Dec 26 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
ASP知识讲座四
2006/10/09 PHP
分享3个php获取日历的函数
2015/09/25 PHP
PHP获取对象属性的三种方法实例分析
2019/01/03 PHP
laravel通过a标签从视图向控制器实现传值
2019/10/15 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
2020/02/27 PHP
JS解密入门之凭直觉解
2008/06/25 Javascript
js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版
2011/01/08 Javascript
formStorage 基于jquery的一个插件(存储表单中元素的状态到本地)
2012/01/20 Javascript
php对mongodb的扩展(小试牛刀)
2012/11/11 Javascript
Jquery颜色选择器ColorPicker实现代码
2012/11/14 Javascript
项目实践一图片上传之form表单还是base64前端图片压缩(前端图片压缩)
2016/07/28 Javascript
javascript动画系列之模拟滚动条
2016/12/13 Javascript
JS实现线性表的顺序表示方法示例【经典数据结构】
2017/04/11 Javascript
Vue.js 单页面多路由区域操作的实例详解
2017/07/17 Javascript
jQuery+koa2实现简单的Ajax请求的示例
2018/03/06 jQuery
vue 每次渲染完页面后div的滚动条保持在最底部的方法
2018/03/17 Javascript
React实现全局组件的Toast轻提示效果
2018/09/21 Javascript
Vue 动态添加路由及生成菜单的方法示例
2019/06/20 Javascript
微信小程序用户授权弹窗 拒绝时引导用户重新授权实现
2019/07/29 Javascript
[01:34]2014DOTA2 TI预选赛预选赛 选手比赛房大揭秘!
2014/05/20 DOTA
python启动办公软件进程(word、excel、ppt、以及wps的et、wps、wpp)
2009/04/09 Python
Python利用operator模块实现对象的多级排序详解
2017/05/09 Python
python基础之入门必看操作
2017/07/26 Python
Python global全局变量函数详解
2018/09/18 Python
Python提取转移文件夹内所有.jpg文件并查看每一帧的方法
2019/06/27 Python
pymysql 开启调试模式的实现
2019/09/24 Python
对tensorflow中tf.nn.conv1d和layers.conv1d的区别详解
2020/02/11 Python
TensorFlow使用Graph的基本操作的实现
2020/04/22 Python
Python列表推导式实现代码实例
2020/09/09 Python
关于HTML5 Placeholder新标签低版本浏览器下不兼容的问题分析及解决办法
2016/01/27 HTML / CSS
广告学毕业生求职信
2014/01/30 职场文书
班级安全教育实施方案
2014/02/23 职场文书
廉洁教育学习材料
2014/05/19 职场文书
刑事辩护授权委托书范本
2014/10/17 职场文书
2014年涉外离婚协议书范本
2014/11/20 职场文书
企业介绍信范文
2015/01/30 职场文书