柴深平等和平等不工作
chai deep equal and equal not working
chai 怎么没用
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 的值 return 是 JSON 的字符串,比如
"{a: '2', b: '3'}"
哪个案例我以前遇到过。如果是这样,请在深度相等操作之前尝试 JSON.parse()
这个值。
chai 似乎比对象结构检查得更多。
我在 promise JSON.parse(JSON.stringify(response))
中做了这个并且让它起作用了,所以根据这个问题 How to copy JavaScript object to new variable NOT by reference? 我假设 chai 正在检查对象的引用,这对我来说毫无意义完全没有。
不是我期望的解决方案,但对我有用,有人有更好的解决方案请分享。
Object.getOwnPropertyNames(obj)
是查看对象 实际上 包含什么的好方法,如果它们都是对象,即使在控制台日志中看起来也一样但不一样。
例如,chai deep.equal
会将 {a:1, b:2}
和 Mongoose 实例中的类似对象识别为不同,但实际上不会告诉您有什么不同(“+ 预期 - 实际”是空的)。 Object.getOwnPropertNames
将显示对象的真实内容。
chai 怎么没用
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 的值 return 是 JSON 的字符串,比如
"{a: '2', b: '3'}"
哪个案例我以前遇到过。如果是这样,请在深度相等操作之前尝试 JSON.parse()
这个值。
chai 似乎比对象结构检查得更多。
我在 promise JSON.parse(JSON.stringify(response))
中做了这个并且让它起作用了,所以根据这个问题 How to copy JavaScript object to new variable NOT by reference? 我假设 chai 正在检查对象的引用,这对我来说毫无意义完全没有。
不是我期望的解决方案,但对我有用,有人有更好的解决方案请分享。
Object.getOwnPropertyNames(obj)
是查看对象 实际上 包含什么的好方法,如果它们都是对象,即使在控制台日志中看起来也一样但不一样。
例如,chai deep.equal
会将 {a:1, b:2}
和 Mongoose 实例中的类似对象识别为不同,但实际上不会告诉您有什么不同(“+ 预期 - 实际”是空的)。 Object.getOwnPropertNames
将显示对象的真实内容。