使用mocha和chai进行测试时,我经常需要测试数组中的所有元素是否满足条件。
目前我正在使用以下内容:
var predicate = function (el) {
return el instanceof Number;
};
it('Should be an array of numbers', function () {
var success,
a = [1, 2, 3];
success = a.every(predicate);
expect(success).to.equal(true);
});
通过http://i.stack.imgur.com/r6CbK.png,我无法看到任何提供此类行为的内容。我错过了什么或者我是否必须编写插件来扩展chai?
答案 0 :(得分:7)
可能不会比目前的方法有很大改进,但你可以做一些事情:
expect(a).to.satisfy(function(nums) {
return nums.every(function(num) {
return num instanceof Number;
});
});
答案 1 :(得分:5)
答案 2 :(得分:0)
通过满足和 chai-things
添加上述两个答案的结果a.should.all.satisfy(s => typeof(s) === 'number');
作为某些情况的变体,你也可以使用类似的东西
a.filter(e => typeof(e)==='number').should.have.length(a.length);
a.filter(e => typeof(e)==='number').should.eql(a);