为什么在比较空数组和空对象时 Jasmine toEqual return 为真?
Why does Jasmine toEqual return true when comparing empty array with empty object?
我明白为什么以下 returns 错误...
expect({}).toBe({});
我明白为什么以下 returns 正确...
expect({}).toEqual({});
但是为什么是下面的true
?
expect([]).toEqual({});
似乎 toEqual()
将两个项目都视为对象并迭代每个项目的可枚举属性 — 检查它们的值是否相等。
换句话说,它似乎将数组视为常规 JS 对象,使用索引作为具有相应值的 "property"。只要数组中的 index/value 对与对象中的 property/value 对匹配,jasmine 显然将它们视为相等。
例如,以下是(令人惊讶地)成功的……
var myArray = ['a', 'b'];
var myObj = {
1: 'b',
0: 'a'
};
expect(myArray).toEqual(myObj);
我明白为什么以下 returns 错误...
expect({}).toBe({});
我明白为什么以下 returns 正确...
expect({}).toEqual({});
但是为什么是下面的true
?
expect([]).toEqual({});
似乎 toEqual()
将两个项目都视为对象并迭代每个项目的可枚举属性 — 检查它们的值是否相等。
换句话说,它似乎将数组视为常规 JS 对象,使用索引作为具有相应值的 "property"。只要数组中的 index/value 对与对象中的 property/value 对匹配,jasmine 显然将它们视为相等。
例如,以下是(令人惊讶地)成功的……
var myArray = ['a', 'b'];
var myObj = {
1: 'b',
0: 'a'
};
expect(myArray).toEqual(myObj);