【问题标题】: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 包中处理集合的方式的错误?由于我不确定,我已经在包裹上交叉发布了一个问题。

【问题讨论】:

标签: 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。解决方法

您可以:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    • 2021-10-15
    相关资源
    最近更新 更多