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 相关文章推荐
基于 Docker 开发 NodeJS 应用
Jul 30 NodeJs
iPhone手机上搭建nodejs服务器步骤方法
Jul 06 NodeJs
Nodejs进阶:如何将图片转成datauri嵌入到网页中去实例
Nov 21 NodeJs
nodejs使用express创建一个简单web应用
Mar 31 NodeJs
nodejs批量下载图片的实现方法
May 19 NodeJs
Nodejs实现多房间简易聊天室功能
Jun 20 NodeJs
docker中编译nodejs并使用nginx启动
Jun 23 NodeJs
详解NODEJS基于FFMPEG视频推流测试
Nov 17 NodeJs
NodeJS爬虫实例之糗事百科
Dec 14 NodeJs
nodejs中函数的调用实例详解
Oct 31 NodeJs
Nodejs使用archiver-zip-encrypted库加密压缩文件时报错(解决方案)
Nov 18 NodeJs
nodejs处理tcp连接的核心流程
Feb 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
PhpMyAdmin中无法导入sql文件的解决办法
2010/01/08 PHP
PHP网站安装程序制作的原理、步骤、注意事项和示例代码
2010/08/01 PHP
windows下zendframework项目环境搭建(通过命令行配置)
2012/12/06 PHP
PHP制作图形验证码代码分享
2014/10/23 PHP
利用PHP_XLSXWriter代替PHPExcel的方法示例
2017/07/16 PHP
php防止表单重复提交实例讲解
2019/02/11 PHP
为超链接加上disabled后的故事
2010/12/10 Javascript
使用Post提交时须将空格转换成加号的解释
2013/01/14 Javascript
javascript删除option选项的多种方法总结
2013/11/22 Javascript
js实现感应鼠标图片透明度变化的方法
2015/02/20 Javascript
js实现的奥运倒计时时钟效果代码
2015/12/09 Javascript
jQuery给元素添加样式的方法详解
2015/12/30 Javascript
JavaScript iframe数据共享接口实现方法
2016/01/06 Javascript
JavaScript Promise 用法
2016/06/14 Javascript
JS完成画圆圈的小球
2017/03/07 Javascript
js实现动态增加文件域表单功能
2018/10/22 Javascript
vue router带参数页面刷新或回退参数消失的解决方法
2019/02/27 Javascript
jQuery - AJAX load() 实例用法详解
2019/08/27 jQuery
JS猜数字游戏实例讲解
2020/06/30 Javascript
Vue封装全局过滤器Filters的步骤
2020/09/16 Javascript
Python中关于字符串对象的一些基础知识
2015/04/08 Python
django实现前后台交互实例
2017/08/07 Python
Python使用smtp和pop简单收发邮件完整实例
2018/01/09 Python
PyQt5每天必学之带有标签的复选框
2018/04/19 Python
PyQt5实现五子棋游戏(人机对弈)
2020/03/24 Python
django用户登录验证的完整示例代码
2019/07/21 Python
Python virtualenv虚拟环境实现过程解析
2020/04/18 Python
Python爬取你好李焕英豆瓣短评生成词云的示例代码
2021/02/24 Python
css3图片边框border-image的用法
2017/06/30 HTML / CSS
美国最大的在线水培用品商店:GrowersHouse.com
2018/08/14 全球购物
Auguste The Label官网:澳大利亚一家精品女装时尚品牌
2020/06/14 全球购物
三月学雷锋活动总结
2014/06/26 职场文书
出生医学证明书
2014/09/15 职场文书
python Tkinter的简单入门教程
2021/04/11 Python
Python+腾讯云服务器实现每日自动健康打卡
2021/12/06 Python
Win11任务栏无法正常显示 资源管理器不停重启的解决方法
2022/07/07 数码科技