柴深等于等于不工作
chai deep equal and equal not working
一些柴它不起作用
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
将显示对象的真实内容。
相关文章:
- 刷新后,setTimeout将工作或不工作
- Windows.Open 在 window.Location 工作时不起作用
- 变量只能在函数中局部工作,不能全局工作-Javascript
- jQuery的工作方式不一样
- 等效于不带jQuery的getJSON函数
- setInterval工作setTimeout不工作;t
- Javascript在本地工作,不会在Web服务器上工作
- 阻止选择在IE中工作但不在Chrome中工作的文本
- getElementById不工作-根本不返回任何内容
- JQuery 验证引擎不工作,不显示错误消息
- 只是不工作,不知道为什么
- Q.所有工作都不起作用
- Rally App SDK 2.0:Rallymultiobjectpicker,适用于不显示displayField的
- 节奏和余烬,我如何让它在所有路由中工作而不重复代码
- 表单操作无法正常工作.它不会移动到指令链接,即<表单 action=“”>
- Excel公式到Javascript,工作但不一致
- 如何编写依赖于不按住其他键的 .keycode 事件
- CKFinder“编辑”功能在不同域上工作时不起作用
- Bootstrap's弹出窗口只工作于按钮-不锚或跨度
- IE9:为什么设置“-ms-transform”;工作于css,但不能与jquery.css()