使用chai检查数组中的所有元素

时间:2015-07-21 12:08:22

标签: javascript mocha chai

使用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?

3 个答案:

答案 0 :(得分:7)

可能不会比目前的方法有很大改进,但你可以做一些事情:

expect(a).to.satisfy(function(nums) { 
    return nums.every(function(num) {
        return num instanceof Number;
    }); 
});

答案 1 :(得分:5)

看看Chai Things,它是Chai的一个插件,旨在提高对阵列的支持。

示例:

[1, 2, 3].should.all.be.a('number')

答案 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);