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断言,我刚刚测试了断言,它成功了。请看这个问题