Javascript 预期测试不';t使用ES6/ES2015设置对象 问题

Javascript 预期测试不';t使用ES6/ES2015设置对象 问题,javascript,node.js,set,babeljs,Javascript,Node.js,Set,Babeljs,下面的测试应该失败,但它通过了: it('should fail', () => { const actual = new Set('a'); const expected = new Set('b'); expect(actual).toEqual(expected); }); 背景与问题 我正在使用。我用的是巴别塔5。我使用的是节点5,所以使用的是集合。 我是做错了什么,还是这看起来像expect包中处理集合的错误?我在包裹上交叉张贴了一个问题,因为我不确定。1。这是“

下面的测试应该失败,但它通过了:

it('should fail', () => {
  const actual = new Set('a');
  const expected = new Set('b');
  expect(actual).toEqual(expected);
});

背景与问题 我正在使用。我用的是巴别塔5。我使用的是节点5,所以使用的是集合。 我是做错了什么,还是这看起来像
expect
包中处理集合的错误?我在包裹上交叉张贴了一个问题,因为我不确定。

1。这是“预期行为”
expect
依赖于不支持集合和映射的
deep equal

这与节点的
断言的行为一致:

var a = new Set('a');
var b = new Set('b');
console.log(require('assert').deepEqual(a, b) || 'ok');
// Prints 'ok' !
这里讨论了这个问题:

这一评论特别有趣:

我认为我们不应该这样做(或在2309年做任何其他事情)。Assert应该只用于测试io.js本身,而不是试图成为一个好的通用断言库。如果io.js测试需要这个功能足够多的时间,我们需要考虑它,我们应该,但在那之前,仅仅添加它因为它会很好,在我看来不是一个好主意

2.变通办法 您可以:

  • 使用
  • 或者(重新)打开门票以引起对此的关注
  • 或者使用另一个库,就像上面提到的@simon-p-r一样
  • 或者手动进行比较。看
您可以尝试hapijs而不是expect for断言,我刚刚测试了断言,它成功了。请看这个问题