我对Javascript很陌生,我对Chai库进行单元测试有一个简单的问题。
当我在Chai图书馆学习一些材料时,我看到一个声明说“等于”的声明:断言目标严格等于(===)到值"和eql"断言目标与价值深度相等。"。
但我对于严格和深刻之间的差异感到困惑。
答案 0 :(得分:15)
严格相等(或===
)表示您正在将完全相同的对象与自身进行比较:
var myObj = {
testProperty: 'testValue'
};
var anotherReference = myObj;
expect(myObj).to.equal(anotherReference); // The same object, only referenced by another variable
expect(myObj).to.not.equal({testProperty: 'testValue'}); // Even though it has the same property and value, it is not exactly the same object
另一方面,深度等于意味着比较对象的每个属性(以及可能的深层链接对象)具有相同的值。所以:
var myObject = {
testProperty: 'testValue',
deepObj: {
deepTestProperty: 'deepTestValue'
}
}
var anotherObject = {
testProperty: 'testValue',
deepObj: {
deepTestProperty: 'deepTestValue'
}
}
var myOtherReference = myObject;
expect(myObject).to.eql(anotherObject); // is true as all properties are the same, even the inner object (deep) one
expect(myObject).to.eql(myOtherReference) // is still also true for the same reason