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异步编程
Dec 04 NodeJs
NodeJS学习笔记之Connect中间件应用实例
Jan 27 NodeJs
nodejs redis 发布订阅机制封装实现方法及实例代码
Dec 15 NodeJs
详解nodejs 文本操作模块-fs模块(五)
Dec 23 NodeJs
nodejs和php实现图片访问实时处理
Jan 05 NodeJs
Express与NodeJs创建服务器的两种方法
Feb 06 NodeJs
nodejs读写json文件的简单方法(必看)
Mar 09 NodeJs
详解nodejs微信公众号开发——2.自动回复
Apr 10 NodeJs
ajax +NodeJS 实现图片上传实例
Jun 06 NodeJs
NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
Sep 06 NodeJs
nodejs项目windows下开机自启动的方法
Nov 22 NodeJs
nodejs中使用worker_threads来创建新的线程的方法
Jan 22 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简单socket服务器客户端代码实例
2015/05/18 PHP
golang与PHP输出excel示例
2016/07/22 PHP
解决Laravel无法使用COOKIE和SESSION的问题
2019/10/16 PHP
JS代码格式化和语法着色V2
2006/10/14 Javascript
论坛特效代码收集(落伍转发-不错)
2006/12/02 Javascript
iis6+javascript Add an Extension File
2007/06/13 Javascript
JavaScript入门教程(9) Document文档对象
2009/01/31 Javascript
js jquery验证银行卡号信息正则学习
2013/01/21 Javascript
jQuery如何实现点击页面获得当前点击元素的id或其他信息
2014/01/09 Javascript
jQuery实现限制textarea文本框输入字符数量的方法
2015/05/28 Javascript
详解JavaScript正则表达式中的global属性的使用
2015/06/16 Javascript
谈谈因Vue.js引发关于getter和setter的思考
2016/12/02 Javascript
在vue中添加Echarts图表的基本使用教程
2017/11/22 Javascript
vue 弹窗时 监听手机返回键关闭弹窗功能(页面不跳转)
2019/05/10 Javascript
layui 富文本赋值,取值,取纯文本值的实例
2019/09/18 Javascript
vue.js循环radio的实例
2019/11/07 Javascript
Vue强制组件重新渲染的方法讨论
2020/02/03 Javascript
vue 路由守卫(导航守卫)及其具体使用
2020/02/25 Javascript
JavaScript onclick事件使用方法详解
2020/05/15 Javascript
在Vue中使用Select选择器拼接label的操作
2020/10/22 Javascript
使用Python下的XSLT API进行web开发的简单教程
2015/04/15 Python
用Python一键搭建Http服务器的方法
2018/06/01 Python
Python函数装饰器原理与用法详解
2019/08/16 Python
Python进程间通信 multiProcessing Queue队列实现详解
2019/09/23 Python
解决pandas展示数据输出时列名不能对齐的问题
2019/11/18 Python
从0到1使用python开发一个半自动答题小程序的实现
2020/05/12 Python
Python之京东商品秒杀的实现示例
2021/01/06 Python
美国新兴城市生活方式零售商:VILLA
2017/12/06 全球购物
运动会通讯稿100字
2014/01/31 职场文书
银行授权委托书范本
2014/10/04 职场文书
师德师风自查材料
2014/10/14 职场文书
单位作风建设自查报告
2014/10/23 职场文书
装修公司工程部经理岗位职责
2015/04/09 职场文书
行政上诉状范文
2015/05/23 职场文书
jackson json序列化实现首字母大写,第二个字母需小写
2021/06/29 Java/Android
前端框架ECharts dataset对数据可视化的高级管理
2022/12/24 Javascript