【问题标题】:Expect tests don't work with the ES6 / ES2015 Set objectExpect 测试不适用于 ES6 / ES2015 Set 对象
【发布时间】:2015-11-23 22:08:15
【问题描述】:
问题
下面的测试应该失败,但它通过了:
it('should fail', () => {
const actual = new Set('a');
const expected = new Set('b');
expect(actual).toEqual(expected);
});
背景与问题
我正在使用the expect package from npm。我正在使用 Babel 5 来使用 Set。我使用的是节点 5,所以使用的 Set should be native。
我做错了什么,或者这看起来像expect 包中处理集合的方式的错误?由于我不确定,我已经在包裹上交叉发布了一个问题。
【问题讨论】:
-
你可以尝试 hapijs code 而不是期望断言,我刚刚测试了断言并且它有效
-
标签:
javascript
node.js
set
babeljs
【解决方案1】:
1。这是“预期行为”
expect 依赖于 deep-equal,不支持集合和映射。
这与节点assert的行为一致:
var a = new Set('a');
var b = new Set('b');
console.log(require('assert').deepEqual(a, b) || 'ok');
// Prints 'ok' !
这里已经讨论过这个问题:
assert: add support for Set and Map
这个评论特别有趣:
我认为我们不应该这样做(或 #2309 中的任何其他内容)。 Assert 应该只用于测试 io.js 本身,而不是试图成为一个好的通用断言库。如果 io.js 测试需要这种能力的次数足够多,以至于我们需要将其排除在外,我们应该这样做,但在那之前,仅仅添加它,因为它会很好,IMO 并不是一个好主意。
2。解决方法
您可以: