nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比较

 更新时间:2017年09月18日 22:33:44   投稿:mdxy-dxy  
这篇文章主要介绍了node项目中遇到使用断言测试程序,看了下nodejs的api之后,对nodejs中assert断言的几个方法做个简单的记录,需要的朋友可以参考下

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)

相关文章

  • node连接kafka2.0实现方法示例

    node连接kafka2.0实现方法示例

    这篇文章主要介绍了node连接kafka2.0,nodejs连接kafka2.0的实现方法,结合实例形式分析了kafka2.0的功能、原理、以及node.js连接kafka2.0的具体实现技巧,需要的朋友可以参考下
    2023-05-05
  • node.js自动上传ftp的脚本分享

    node.js自动上传ftp的脚本分享

    这篇文章主要给大家介绍了一个关于node.js自动上传ftp脚本的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-06-06
  • nodejs利用readline提示输入内容实例代码

    nodejs利用readline提示输入内容实例代码

    这篇文章主要给大家介绍了关于nodejs利用readline提示输入内容的相关资料,Readline是Node.js里实现标准输入输出的封装好的模块,通过这个模块我们可以以逐行的方式读取数据流,需要的朋友可以参考下
    2021-07-07
  • Node.js的npm包管理器基础使用教程

    Node.js的npm包管理器基础使用教程

    特别是JavaScript领域中,基于NPM的网络传输方式真的是越来越流行,包括React与Vue等许多JavaScript库与框架都选择使用npm进行管理,这里就为大家送上Node.js的npm包管理器基础使用教程,需要的朋友可以参考下
    2016-05-05
  • 用node和express连接mysql实现登录注册的实现代码

    用node和express连接mysql实现登录注册的实现代码

    本篇文章主要介绍了用node和express连接mysql实现登录注册的实现代码,具有一定的参考价值,有兴趣的可以了解一下
    2017-07-07
  • nodejs微信公众号支付开发

    nodejs微信公众号支付开发

    这篇文章主要为大家详细介绍了nodejs微信公众号支付开发,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • 详解nodejs微信jssdk后端接口

    详解nodejs微信jssdk后端接口

    本篇文章主要介绍了详解nodejs微信jssdk后端接口,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Node.js基础入门之使用方式及模块化详解

    Node.js基础入门之使用方式及模块化详解

    Node.js是一个基于 Chrome V8 引擎的 JavaScript 运行时。类似于Java中的JRE,.Net中的CLR。本文将详细为大家介绍一些Node.js的基础知识和使用方式以及其模块化,需要的可以参考一下
    2022-03-03
  • Node.js  事件循环详解及实例

    Node.js 事件循环详解及实例

    这篇文章主要介绍了 Node.js 事件循环详解及实例的相关资料,Node.js 有多个内置的事件,我们可以通过引入 events 模块,并通过实例化 EventEmitter 类来绑定和监听事件,需要的朋友可以参考下
    2017-08-08
  • 详解如何使用koa实现socket.io官网的例子

    详解如何使用koa实现socket.io官网的例子

    这篇文章主要介绍了详解如何使用koa实现socket.io官网的例子,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11

最新评论