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中操作mysql数据库示例
Dec 20 NodeJs
nodejs简单实现中英文翻译
May 04 NodeJs
ubuntu下安装nodejs以及升级的办法
May 08 NodeJs
Nodejs实现批量下载妹纸图
May 28 NodeJs
nodejs爬虫抓取数据乱码问题总结
Jul 03 NodeJs
配置nodejs环境的方法
May 13 NodeJs
mac下的nodejs环境安装的步骤
May 24 NodeJs
NodeJs中express框架的send()方法简介
Jun 20 NodeJs
nodejs操作mongodb的增删改查功能实例
Nov 09 NodeJs
详解nodejs通过响应回写的方式渲染页面资源
Apr 07 NodeJs
解决Nodejs全局安装模块后找不到命令的问题
May 15 NodeJs
nodejs中方法和模块用法示例
Dec 24 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
安健A254立体声随身听的分析与打磨
2021/03/02 无线电
PHP用mysql数据库存储session的代码
2010/03/05 PHP
FleaPHP框架数据库查询条件($conditions)写法总结
2016/03/19 PHP
CI框架的安全性分析
2016/05/18 PHP
javascript下IE与FF兼容函数收集
2008/09/17 Javascript
Extjs学习笔记之三 extjs form更多的表单项
2010/01/07 Javascript
javascript,jquery闭包概念分析
2010/06/19 Javascript
最佳JS代码编写的14条技巧
2011/01/09 Javascript
js中switch case循环实例代码
2013/12/30 Javascript
jQuery实现在textarea指定位置插入字符或表情的方法
2015/03/11 Javascript
jQuery弹出层插件Lightbox_me使用指南
2015/04/21 Javascript
jQuery实现div随意拖动的实例代码(通用代码)
2016/01/28 Javascript
Vue.js 表单校验插件
2016/08/14 Javascript
Bootstrap源码解读按钮(5)
2016/12/23 Javascript
实例详解display:none与visible:hidden的区别
2017/03/30 Javascript
NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
2017/09/06 NodeJs
Vue响应式原理深入解析及注意事项
2017/12/11 Javascript
VUE+Element环境搭建与安装的方法步骤
2019/01/24 Javascript
[03:11]2014DOTA2国际邀请赛-VG掉入败者组 独家专访357
2014/07/19 DOTA
Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法
2015/03/05 Python
详解Python函数作用域的LEGB顺序
2016/05/14 Python
bat和python批量重命名文件的实现代码
2016/05/19 Python
Python开启线程,在函数中开线程的实例
2019/02/22 Python
详解Python基础random模块随机数的生成
2019/03/23 Python
Python使用pickle进行序列化和反序列化的示例代码
2020/09/22 Python
HTML5添加禁止缩放功能
2017/11/03 HTML / CSS
用友笔试题目
2016/10/25 面试题
营销专业应届生求职信
2013/11/26 职场文书
万年牢教学反思
2014/02/15 职场文书
艺术学院毕业生自我评价
2014/03/02 职场文书
《生命的药方》教学反思
2014/04/08 职场文书
员工保密协议书
2014/09/27 职场文书
2014年幼儿园教研工作总结
2014/12/04 职场文书
2015年采购工作总结
2015/04/10 职场文书
幼儿园辞职信
2015/05/13 职场文书
暂住证明怎么写
2015/06/19 职场文书