chai测试数组相等不能按预期工作

kan*_*nix 219 mocha.js node.js chai

为什么以下失败?

expect([0,0]).to.equal([0,0]);
Run Code Online (Sandbox Code Playgroud)

什么是测试的正确方法?

mok*_*oka 345

对于期望,.equal将比较对象而不是它们的数据,在您的情况下,它是两个不同的数组.

使用.eql以深深的比较值.看看这个链接.
或者您可以使用.deep.equal以模拟相同的.eql.
或者在您的情况下,您可能想要检查 .members.

对于可以使用的断言.deepEqual,链接.

  • 它没有改变,你正在看**Asserts**功能,但不是**期望/应该**主题启动器关注. (7认同)
  • `to.deep.equal(['a','b'])`似乎不起作用.然而`to.have.all.members(['a','b'])`确实如此.这么麻烦...... (6认同)
  • 你是对的,我读得不好.我认为这只是另一个API变化. (5认同)
  • FTR,深度相等的语法已改为:`..deepEqual()`(http://chaijs.com/api/assert). (2认同)

Mee*_*hta 57

尝试使用深度等于.它将比较嵌套数组和嵌套Json.

expect({ foo: 'bar' }).to.deep.equal({ foo: 'bar' });
Run Code Online (Sandbox Code Playgroud)

请参阅主要文档站点.

  • 这也适用于数组:`expect([1,5,10] .sort()).to.deep.equal([1,10,5])` (5认同)