我在我的单元测试中使用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();
答案 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
扩展名。 }}