在NodeJS测试中,使用strictEqual进行比较时,不会出现"输入对象相同但引用不相等"的问题。strictEqual是NodeJS的断言方法之一,用于比较两个值是否严格相等,即值和类型都相等。它使用的是严格相等运算符(===)进行比较,不会进行类型转换。
当使用strictEqual比较两个对象时,会比较它们的引用地址,而不是对象的内容。如果两个对象引用地址相同,即使它们的内容相同,也会被认为不相等。这是因为在JavaScript中,对象是通过引用来传递和比较的。
以下是一个示例:
const obj1 = { name: 'John' };
const obj2 = { name: 'John' };
const obj3 = obj1;
console.log(obj1 === obj2); // false
console.log(obj1 === obj3); // true
assert.strictEqual(obj1, obj2); // AssertionError: { name: 'John' } === { name: 'John' }
assert.strictEqual(obj1, obj3); // Passes
在上面的例子中,obj1和obj2的内容相同,但它们的引用地址不同,所以使用strictEqual比较时会抛出断言错误。而obj1和obj3的引用地址相同,所以使用strictEqual比较时会通过断言。
总结起来,使用strictEqual进行比较时,只有当两个值的引用地址相同才会被认为相等,否则会被认为不相等。
领取专属 10元无门槛券
手把手带您无忧上云