我不喜欢这里的代码,是否有正确的方法在chai中找到交集,使用类似于寻找超集的方法:expect([1,2]).to.contain.members([2])
mocha.setup("bdd");
var intersection = function(arr1, arr2) {
return arr1.filter(function(n) {
return arr2.indexOf(n) != -1;
});
};
describe("Test suite", function() {
it("should find if arrays intersect", function() {
chai.expect(intersection([1, 2], [2, 3])).not.to.be.empty;
});
});
mocha.run();<link href="https://cdnjs.cloudflare.com/ajax/libs/mocha/2.3.4/mocha.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mocha/2.3.4/mocha.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/chai/3.4.1/chai.min.js"></script>
<div id="mocha"></div>
发布于 2019-05-18 10:14:08
柴能做到!
新句法
expect([1,2]).to.contain.oneOf([2,3]);旧语法
expect([1,2]).to.include.any.members([2,3]);发布于 2015-12-22 20:49:29
为了检查两个数组的交集,我建议您使用set操作库。嘿,我只是碰巧写了一个!这叫做亲和力,它是免费的。(https://www.npmjs.com/package/affinity)。它是一个集合和关系运算符的库。它还在开发中,但是set操作符工作得很好(有400个单元测试和计数)。
在这种情况下,您可能想做
var affinity = require('affinity');
var set1 = new affinity.Set({type : affinity.Integer, elements : [1, 2]});
var set2 = new affinity.Set({type : affinity.Integer, elements : [2, 3]});
chai.expect(set1.setIntersection(set2).elements()).not.to.be.empty;
// you also have setUnion, setProduct, ...发布于 2015-12-22 21:03:04
您可以从流行的_.intersection库中使用房客,如下所示:
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.1/lodash.js"></script>..。
chai.expect(_.intersection([1, 2], [2, 3])).not.to.be.emptyhttps://stackoverflow.com/questions/34423929
复制相似问题