在 Chai 断言库中,当我们已经有了“assert.deepEqual()”和“assert.strictEqual()”时,“assert.equal()”有什么用?

Pra*_*ava 6 javascript testing mocha.js chai

Chai 断言库中,当我们已经有“ assert.deepEqual() 和“ assert.strictEqual() ”用于严格和深度相等断言时,“assert.equal()”有什么用?还提到“assert.equal()”使用非严格相等。非严格平等和深度平等有什么区别?为什么我们不能只使用“deepEqual”而不是“equal”?

fjc*_*fjc 4

当您查看这些函数的Chai 文档.deep时,您会得到非常清晰的描述:

导致链中后续的所有 .equal、.include、.members、.keys 和 .property 断言使用深度相等而不是严格 (===) 相等。

当您使用 时equal,Chai 使用===比较。因此,在比较对象时,Chai 会检查引用

当您使用 时deepEqual,Chai 将沿着对象层次结构向下比较每个属性的每个

例子:

const a = {"a": "a"};
const b = {"a": "a"};
expect(a).to.equal(b); // false, as a refers to a different object than b
expect(a).to.deep.equal(b); // true, as the value of every property of a and b equals
Run Code Online (Sandbox Code Playgroud)