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 npm package.json中文文档
Sep 04 NodeJs
NodeJS制作爬虫全过程(续)
Dec 22 NodeJs
nodejs URL模块操作URL相关方法介绍
Mar 03 NodeJs
Nodejs中session的简单使用及通过session实现身份验证的方法
Feb 04 NodeJs
nodejs连接mongodb数据库实现增删改查
Dec 01 NodeJs
Nodejs读取文件时相对路径的正确写法(使用fs模块)
Apr 27 NodeJs
详解nodejs异步I/O和事件循环
Jun 07 NodeJs
Windows下使用Nodejs运行js的方法
Sep 02 NodeJs
nodejs中Express与Koa2对比分析
Feb 06 NodeJs
nodeJS模块简单用法示例
Apr 21 NodeJs
nodejs搭建本地服务器并访问文件操作示例
May 11 NodeJs
Sublime Text3 配置 NodeJs 环境的方法
May 20 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
PhpMyAdmin出现export.php Missing parameter: what /export_type错误解决方法
2012/08/09 PHP
php中实现可以返回多个值的函数实例
2015/03/21 PHP
PHP实现HTML页面静态化的方法
2015/11/04 PHP
PHP判断一个变量是否为整数、正整数的方法示例
2019/09/11 PHP
关于laravel-admin ueditor 集成并解决刷新的问题
2019/10/21 PHP
jquery实现textarea输入字符控制(仿微博输入控制字符)
2013/04/26 Javascript
jquery组件使用中遇到的问题整理及解决
2014/02/21 Javascript
js点击button按钮跳转到另一个新页面
2014/10/10 Javascript
node.js中的path.join方法使用说明
2014/12/08 Javascript
JavaScript对数字的判断与处理实例分析
2015/02/02 Javascript
javascript作用域链(Scope Chain)用法实例解析
2015/11/30 Javascript
深入理解js promise chain
2016/05/05 Javascript
Bootstrap CDN和本地化环境搭建
2016/10/26 Javascript
微信小程序中顶部导航栏的实现代码
2017/03/30 Javascript
详谈jQuery中使用attr(), prop(), val()获取value的异同
2017/04/25 jQuery
原生JS实现不断变化的标签
2017/05/22 Javascript
vue 实现类似淘宝星级评分的示例
2018/03/01 Javascript
vue中的router-view组件的使用教程
2018/10/23 Javascript
vue实现百度下拉列表交互操作示例
2019/03/12 Javascript
python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
2013/12/06 Python
浅析Python编写函数装饰器
2016/03/18 Python
python django 访问静态文件出现404或500错误
2017/01/20 Python
python的xpath获取div标签内html内容,实现innerhtml功能的方法
2019/01/02 Python
python创建属于自己的单词词库 便于背单词
2019/07/30 Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
2019/08/08 Python
python 安装库几种方法之cmd,anaconda,pycharm详解
2020/04/08 Python
HTML5离线缓存在tomcat下部署可实现图片flash等离线浏览
2012/12/13 HTML / CSS
加拿大票务网站:Ticketmaster加拿大
2017/07/17 全球购物
英国护发和美妆在线商店:Klip Shop
2019/03/24 全球购物
酒店保安员岗位职责
2014/01/31 职场文书
毕业横幅标语
2014/10/08 职场文书
服务员岗位职责
2015/02/03 职场文书
2015年全国爱眼日活动小结
2015/02/27 职场文书
《曾国藩家书》读后感——读家书,立家风
2019/08/21 职场文书
Vue和Flask通信的实现
2021/05/19 Vue.js
Hive导入csv文件示例
2022/06/25 数据库