我不喜欢我的代码,是否有正确的方法在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>
答案 0 :(得分:1)
柴能做到!
expect([1,2]).to.include.any.members([2,3]);
答案 1 :(得分:0)
要检查两个数组的交集,我建议您使用set操作库。嘿,我刚刚写了一个!它被称为亲和力,它是免费的。 (https://www.npmjs.com/package/affinity)。它是集合和关系运算符的库。它仍在开发中,但是设置操作员的工作非常好(有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, ...
答案 2 :(得分:0)
您可以使用热门lodash库中的<p data-sly-test="{{wcmmode.edit}}">You are in edit mode</p>
<p data-sly-test="{{wcmmode.design}}">You are in design mode</p>
,如下所示:
_.intersection
...
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.1/lodash.js"></script>