如何使用 should.js 断言 Set 包含所需的值?

How to assert that Set contains the required values with should.js?

我在我的单元测试中使用 should.js 库进行断言,想知道我将如何断言 Set 的内容符合预期。

let actualValues = new Set();
actualValues.add(2);
actualValues.add(4);
actualValues.add(6);

actualValues.should.be....... ?

我的第一直觉是使用 Array.from(actualValues),然后将其与预期值进行比较;但自然 actualValues 的顺序是未定义的,因为它是 Set.

以下作品;但它似乎很冗长:

actualValues.size.should.be.eql(3);
actualValues.has(2).should.be.true();
actualValues.has(4).should.be.true();
actualValues.has(6).should.be.true();

您可以迭代一组并断言每个项目也在第二组中,然后断言它们的大小相等。

const should = require('should')

const set1 = new Set(['red', 'green', 'blue']);
const set2 = new Set(['blue', 'red', 'green']);
for (let x of set1) {
  set2.has(x).should.be.true()
}
set2.size.should.equal(set1.size)

这可能是至少像 haveSameContent(set1, set2) 这样的辅助函数的一个很好的候选者,如果您希望能够执行类似 set1.should.have.same.items.as(set2).