当前位置 : 主页 > 网页制作 > Nodejs >

node.js – 什么是Mocha相等的测试?

来源:互联网 收集:自由互联 发布时间:2021-06-16
我正在使用Mocha测试Express Node应用程序.我想进行以下测试(比较两个空数组): assert.equal [], [] 通过.但是,Mocha给了我以下错误: 断言错误:[] == [] 我应该使用哪种方法来比较两个空数组来
我正在使用Mocha测试Express Node应用程序.我想进行以下测试(比较两个空数组):

assert.equal [], []

通过.但是,Mocha给了我以下错误:
断言错误:[] == []

我应该使用哪种方法来比较两个空数组来传递?

问题是数组是JavaScript中的引用类型,因此只比较引用.当然,如果您创建两个彼此独立的不同空数组,它们是两个不同的对象并具有两个不同的引用.

这就是测试失败的原因.

你基本上对对象有相同的问题(没有深度相等),尽管你经常对两个对象是否相同,但它们的内容是否相同不感兴趣.

这就是为什么我写了一个模块来处理这个问题:comparejs.这个模块 – 除了其他一些好东西 – 通过提供所有(!)类型的价值比较和身份比较来解决这个问题.我想这就是你需要的东西.

由于您特别要求mocha的上下文,我还编写了自己的断言模块,称为node-assertthat,它在内部使用了comparejs.作为副作用,您可以获得更易读(更流畅)的语法.代替

assert.equal(foo, bar);

你可以写

assert.that(foo, is.equalTo(bar));

也许这可能是你走的路.

PS:我知道在Stackoverflow上不需要自我广告,但在这种情况下,我为自己编写的工具只是解决了原始海报的问题.因此,请不要将此答案标记为垃圾邮件.

网友评论