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 05 NodeJs
跟我学Nodejs(三)--- Node.js模块
May 25 NodeJs
nodejs分页类代码分享
Jun 17 NodeJs
NodeJs基本语法和类型
Feb 13 NodeJs
Nodejs中session的简单使用及通过session实现身份验证的方法
Feb 04 NodeJs
nodejs个人博客开发第二步 入口文件
Apr 12 NodeJs
nodejs入门教程一:概念与用法简介
Apr 24 NodeJs
nodejs制作爬虫实现批量下载图片
May 19 NodeJs
nodejs 搭建简易服务器的图文教程(推荐)
Jul 18 NodeJs
使用nodejs+express实现简单的文件上传功能
Dec 27 NodeJs
Nodejs使用archiver-zip-encrypted库加密压缩文件时报错(解决方案)
Nov 18 NodeJs
分享五个Node.js开发的优秀实践 
Apr 07 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
利用curl 多线程 模拟 并发的详解
2013/06/14 PHP
PHP编程实现脚本异步执行的方法
2017/08/09 PHP
使用YII2框架实现微信公众号中表单提交功能
2017/09/04 PHP
jquery的$(document).ready()和onload的加载顺序
2010/05/26 Javascript
基于jQuery的简单九宫格实现代码
2012/08/09 Javascript
javascript在IE下trim函数无法使用的解决方法
2014/09/12 Javascript
javascript实现回车键提交表单方法总结
2015/01/10 Javascript
js实现鼠标感应向下滑动隐藏菜单的方法
2015/02/20 Javascript
JavaScript下的时间格式处理函数Date.prototype.format
2016/01/27 Javascript
jQuery表格(Table)基本操作实例分析
2017/03/10 Javascript
手机端转换rem适应
2017/04/01 Javascript
微信小程序 自定义Toast实例代码
2017/06/12 Javascript
BackBone及其实例探究_动力节点Java学院整理
2017/07/14 Javascript
在Js页面通过POST传递参数跳转到新页面详解
2017/08/25 Javascript
浅谈React 服务器端渲染的使用
2018/05/08 Javascript
JS使用Date对象实时显示当前系统时间简单示例
2018/08/23 Javascript
layui问题之自动滚动二级iframe页面到指定位置的方法
2019/09/18 Javascript
Python使用django搭建web开发环境
2017/06/09 Python
Python3解决棋盘覆盖问题的方法示例
2017/12/07 Python
Python+request+unittest实现接口测试框架集成实例
2018/03/16 Python
Python 读取某个目录下所有的文件实例
2018/06/23 Python
Python math库 ln(x)运算的实现及原理
2019/07/17 Python
Python实现Singleton模式的方式详解
2019/08/08 Python
Python如何使用PIL Image制作GIF图片
2020/05/16 Python
俄罗斯游戏商店:Buka
2020/03/01 全球购物
护理职业生涯规划书
2014/01/24 职场文书
工作自我评价怎么写
2014/01/29 职场文书
《都江堰》教学反思
2014/02/07 职场文书
美丽乡村建设实施方案
2014/03/23 职场文书
责任心演讲稿
2014/05/14 职场文书
单位委托书范本(3篇)
2014/09/18 职场文书
关于有小孩的离婚协议书
2014/10/26 职场文书
2015年教师节主持词
2015/07/03 职场文书
2019已经过半,你知道年中工作总结该怎么写吗?
2019/07/03 职场文书
Pytorch使用shuffle打乱数据的操作
2021/05/20 Python
浅谈spring boot使用thymeleaf版本的问题
2021/08/04 Java/Android