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

时间:2016-01-03 13:46:01

标签: node.js set 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();

1 个答案:

答案 0 :(得分:1)

你可以迭代一个集合并断言每个项目也在第二个集合中,然后声明它们的大小是相等的。

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)的良好候选者,如果您希望能够执行{{1}之类的操作,您也可以将其编码为should.js扩展名。 }}

相关问题