1

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

input,indexlastIndex

MSDN 文档

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

我仍在努力提高单元测试的学习曲线,所以我只是好奇处理这种失败的正确方法是什么。

以下工作,但似乎有点蹩脚:

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

2 回答 2

3

Underscore 的“差异”方法可以帮助 -

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

http://underscorejs.org/#difference

于 2012-10-23T16:29:05.797 回答
1

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

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

所以我正在使用:

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

按预期工作。

无论如何,我想知道其他人是如何做到这一点的。

于 2013-03-01T01:18:14.707 回答