如何使用 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)
.
我在我的单元测试中使用 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)
.