【问题标题】:Why does Jasmine toEqual return true when comparing empty array with empty object?为什么 Jasmine toEqual 在比较空数组和空对象时返回 true?
【发布时间】:2015-06-11 06:54:27
【问题描述】:

我明白为什么以下返回 false...

expect({}).toBe({});

我明白为什么以下返回 true...

expect({}).toEqual({});

但是为什么下面是true

expect([]).toEqual({});

【问题讨论】:

    标签: javascript tdd jasmine


    【解决方案1】:

    toEqual() 似乎将这两个项目都视为对象并迭代每个项目的可枚举属性——检查它们的值是否相等。

    换句话说,它似乎将数组视为常规 JS 对象,将索引用作具有相应值的“属性”。只要数组中的索引/值对与对象中的属性/值对匹配,jasmine 显然会将它们视为相等。

    例如,以下是(令人惊讶的)成功的……

      var myArray = ['a', 'b'];
      var myObj = {
        1: 'b',
        0: 'a'
      };
      expect(myArray).toEqual(myObj);
    

    【讨论】:

      猜你喜欢
      • 2016-03-12
      • 1970-01-01
      • 2011-05-22
      • 1970-01-01
      • 2016-07-08
      • 1970-01-01
      • 2020-05-07
      • 2015-07-25
      相关资源
      最近更新 更多