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

本文详细介绍了Node.js assert模块中的equal(), strictEqual(), deepEqual(), strictDeepEqual()四个方法,分别用于普通相等比较、严格相等比较、深度相等比较和深度严格相等比较。equal()和strictEqual()主要区别在于是否检查类型,而deepEqual()和strictDeepEqual()则在深度比较的基础上,区别在于是否进行严格的类型检查。此外,还提到了assert模块的其他有用方法。" 112945532,10543105,SkyWalking后端服务存储配置详解,"['skywalking服务端', 'Elasticsearch', 'MySQL', '数据库配置']
     最近node项目中遇到使用断言测试程序,看了下nodejs的api之后,对nodejs中assert断言的几个方法做个简单的记录。

1 equal()

  • equal(actual,expected[,message])

相当于使用 == 运算符比较两个参数值actualexpected是否相等,如果相等不返回任何值,如果不相等则返回带有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)
内容概要:本文提出了一种基于瞬态三角哈里斯鹰算法(TTHHO)的多无人机协同集群在三维空间中的避障路径规划方法,旨在通过优化路径长度、飞行高度、威胁规避和转弯角度等关键因素,实现以最低综合成本为目标的全局路径规划。该方法结合智能优化算法与多智能体协同机制,在复杂三维环境中有效解决动态障碍物规避与飞行安全性问题,并通过Matlab平台进行算法编码实现与仿真实验,验证了其在路径最优性、收敛速度和避障能力方面的优越性能。研究涵盖了三维空间建模、目标函数构建、约束条件处理及多无人机协同策略设计,提升了无人机系统在实际应用场景中的自主导航与智能化决策水平。; 适合人群:具备一定编程基础,熟练掌握Matlab仿真环境,从事无人机路径规划、智能优化算法、多智能体协同控制等相关方向研究的科研人员、工程技术人员及研究生。; 使用场景及目标:① 实现多无人机在复杂三维环境下的协同避障路径规划,确保飞行安全与任务效率;② 研究基于哈里斯鹰算法及其改进版本(如TTHHO)的智能优化机制在路径规划中的应用;③ 推动多目标优化(路径最短、能耗最低、威胁最小、飞行平稳)下无人机自主导航系统的开发与落地; 阅读建议:此资源以Matlab代码实现为核心支撑,建议读者深入理解TTHHO算法原理的基础上,结合文中提供的仿真模型进行代码调试与参数调优,进一步探索不同环境设置和约束条件下算法的适应性与鲁棒性,鼓励通过扩展威胁模型或引入通信延迟等现实因素开展深化研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值