柴深等于等于不工作

chai deep equal and equal not working

本文关键字:工作 于不      更新时间:2023-09-26

一些柴它不起作用

promise = doSomething()
expect(promise).to.eventually.equal(obj)
expect(promise).to.eventually.deep.equal(obj)

但在断言错误中,我得到这个

AssertionError: expected {a: "2", b: "3"} to equal {a: "2", b: "3"}

顺便说一句,我已经尝试过should并且得到了相同的结果

我想也许 promise 的值返回是一串 JSON,比如

"{a: '2', b: '3'}"

我以前遇到过哪个案例。如果是这样,请尝试在深度相等操作之前JSON.parse()此值。

似乎 chai 检查的不仅仅是对象结构。

我在承诺JSON.parse(JSON.stringify(response))中这样做并使其工作,所以根据这个问题如何将 JavaScript 对象复制到新变量而不是通过引用?我假设 chai 正在检查对象的引用,这对我来说根本没有意义。

不是我期望的解决方案,但对我有用,是有人有更好的解决方案,请分享。

Object.getOwnPropertyNames(obj)是查看对象实际包含内容的好方法,如果它们都是对象,即使在控制台日志中看起来也一样,但并不相同。

例如,chai deep.equal 会将 Mongoose 实例中的{a:1, b:2}和相似对象识别为不同,但它实际上不会告诉您有什么不同("+ 预期 - 实际"为空)。 Object.getOwnPropertNames将显示对象的真实内容。