【发布时间】:2015-06-11 06:54:27
【问题描述】:
我明白为什么以下返回 false...
expect({}).toBe({});
我明白为什么以下返回 true...
expect({}).toEqual({});
但是为什么下面是true?
expect([]).toEqual({});
【问题讨论】:
标签: javascript tdd jasmine
我明白为什么以下返回 false...
expect({}).toBe({});
我明白为什么以下返回 true...
expect({}).toEqual({});
但是为什么下面是true?
expect([]).toEqual({});
【问题讨论】:
标签: javascript tdd jasmine
toEqual() 似乎将这两个项目都视为对象并迭代每个项目的可枚举属性——检查它们的值是否相等。
换句话说,它似乎将数组视为常规 JS 对象,将索引用作具有相应值的“属性”。只要数组中的索引/值对与对象中的属性/值对匹配,jasmine 显然会将它们视为相等。
例如,以下是(令人惊讶的)成功的……
var myArray = ['a', 'b'];
var myObj = {
1: 'b',
0: 'a'
};
expect(myArray).toEqual(myObj);
【讨论】: