在ie8中使用jasmine来比较数组失败

时间:2012-07-04 06:40:53

标签: javascript internet-explorer unit-testing jasmine

显然ie8有三个属性通过调用String.prototype.match()附加到结果数组中:

inputindexlastIndex

MSDN Documentation

结果是使用Jasmine的.toEqual()匹配器时数组比较失败。

我仍然在单元测试的学习曲线上工作,所以我只是好奇正确的方法来处理这个失败。

以下作品但看起来有点蹩脚:

 numArray = str.match(/\d+(\.\d+)?/g);
 if (numArray && numArray.input) {
      delete numArray.index;
      delete numArray.input;
      delete numArray.lastIndex;
 }

2 个答案:

答案 0 :(得分:3)

Underscore的'差异'方法可以提供帮助 -

expect(_.difference(['item1', 'item2'], ['item1', 'item2'])).toEqual([]);

http://underscorejs.org/#difference

答案 1 :(得分:1)

我认为@ monkeyboy的答案不正确。

由于underscore.difference()返回第一个数组中第二个数组中不存在的元素:_.difference([1],[1,2]);也是[]所以测试将在不应该传递时通过。我找不到使用下划线解决这个问题的方法。

所以我正在使用:

expect(JSON.stringify(result)).toBe(JSON.stringify(expected));

按预期工作。

无论如何,我想知道别人是怎么做的。