chai deep equal and equal not working
有点不管用
1 2 3 4 5
| 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,得到了相同的结果。
- 它是为我工作的一个简单的return expect(Promise.resolve({ a:"2", b:"3" })).to.eventually.deep.equal({ a:"2", b:"3" });。您确定结果确实符合预期的输出吗?
- 你确定你没有运行这两个断言吗?使用deep标志是正确的,因为您不应该期望对象相等。
- 不,我不是同时运行两者。@雅各布是的,你的解决方案也适用于我使用when,但不通过我的承诺,奇怪的是断言错误得到了相同的值。
- 你在使用什么插件?我用的是chai-as-promised。
- 我想Promise的返回值可能是JSON串,就像"{a: '2', b: '3'}"串,如果是这样,在深度相等之前尝试JSON.parse()这个值…
- @雅各布是的,我用的是以东牌[3]
- @Zangw不起作用,我也尝试将两者转换为字符串,但没有起作用。
- @查理尔,你的新测验有错误吗?
- 查看他们的问题历史,chai可能会悄悄地断言字符串的原型和其他您通常在字符串对象上看不到或不考虑的字段。
我想Promise返回的值可能是一串JSON,比如
"{a: '2', b: '3'}"
我以前见过哪个案子。如果是这样,请在深度相等操作之前尝试JSON.parse()该值。
似乎chai检查的不仅仅是对象结构。
我在promise JSON.parse(JSON.stringify(response))中做了这个,这使得它可以工作,所以根据这个问题,如何将javascript对象复制到新变量而不是通过引用?我假设柴正在检查物体的参照物,这对我来说毫无意义。
不是我期望的解决方案,但对我有效,是有一个更好的解决方案,请分享。