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教程之制作一个简单的文章发布系统
Nov 21 NodeJs
轻松创建nodejs服务器(1):一个简单nodejs服务器例子
Dec 18 NodeJs
nodejs如何获取时间戳与时间差
Aug 03 NodeJs
nodejs实例解析(输出hello world)
Jan 03 NodeJs
NodeJS基础API搭建服务器详细过程记录
Apr 01 NodeJs
详解nodejs爬虫程序解决gbk等中文编码问题
Apr 06 NodeJs
nodejs模块学习之connect解析
Jul 05 NodeJs
nodejs 图片预览和上传的示例代码
Sep 30 NodeJs
nodejs调取微信收货地址的方法
Dec 20 NodeJs
nodejs高大上的部署方式(PM2)
Sep 11 NodeJs
Nodejs调用Dll模块的方法
Sep 17 NodeJs
Nodejs实现微信分账的示例代码
Jan 19 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常用代码大全(新手入门必备)
2010/06/29 PHP
php自定义的格式化时间示例代码
2013/12/05 PHP
PHP5中实现多态的两种方法实例分享
2014/04/21 PHP
PHP实现Javascript中的escape及unescape函数代码分享
2015/02/10 PHP
thinkphp微信开发(消息加密解密)
2015/12/02 PHP
php使用PDO执行SQL语句的方法分析
2017/02/16 PHP
老生常谈PHP数组函数array_merge(必看篇)
2017/05/25 PHP
php实现的双色球算法示例
2017/06/20 PHP
php 使用 __call实现重载功能示例
2019/11/18 PHP
Cookie跨域问题解决方案代码示例
2020/11/24 PHP
JavaScript中SQL语句的应用实现
2010/05/04 Javascript
用js实现输入提示(自动完成)的实例代码
2013/06/14 Javascript
JS,Jquery获取select,dropdownlist,checkbox下拉列表框的值(示例代码)
2014/01/11 Javascript
jQuery制作可自定义大小的拼图游戏
2015/03/30 Javascript
BootStrap3学习笔记(一)之网格系统
2016/05/20 Javascript
原生js的数组除重复简单实例
2016/05/24 Javascript
jQuery和CSS仿京东仿淘宝列表导航菜单
2017/01/04 Javascript
vue小图标favicon不显示的解决方案
2017/09/19 Javascript
关于vue v-for 循环问题(一行显示四个,每一行的最右边那个计算属性)
2018/09/04 Javascript
Layui数据表格 前后端json数据接收的方法
2019/09/19 Javascript
Python中的两个内置模块介绍
2015/04/05 Python
使用Python下载歌词并嵌入歌曲文件中的实现代码
2015/11/13 Python
使用Python的urllib和urllib2模块制作爬虫的实例教程
2016/01/20 Python
Python有序字典简单实现方法示例
2017/09/28 Python
python定时检测无响应进程并重启的实例代码
2019/04/22 Python
django中瀑布流写法实例代码
2019/10/14 Python
python 利用Pyinstaller打包Web项目
2020/10/23 Python
打架检讨书800字
2014/01/10 职场文书
小学运动会广播稿200字(十二篇)
2014/01/14 职场文书
信用社主任竞聘演讲稿
2014/05/23 职场文书
护林防火标语
2014/06/27 职场文书
党员个人对照检查材料思想汇报
2014/09/16 职场文书
世界文化遗产导游词
2015/02/13 职场文书
校园音乐节目广播稿
2015/08/19 职场文书
python单元测试之pytest的使用
2021/06/07 Python
Python+腾讯云服务器实现每日自动健康打卡
2021/12/06 Python