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

Sti*_*ube 5 javascript mocha.js 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);
});
Run Code Online (Sandbox Code Playgroud)

通过文档查看,我无法立即看到任何提供此类行为的内容.我错过了什么或者我是否必须编写插件来扩展chai?

Ste*_*mas 7

可能不会比你目前的方法有很大改进,但你可以这样做:

expect(a).to.satisfy(function(nums) { 
    return nums.every(function(num) {
        return num instanceof Number;
    }); 
});
Run Code Online (Sandbox Code Playgroud)

  • 在我的情况下不起作用:这是工作期望(a).to.satisfy(function(nums) { return nums.every(function(num) { return typeof(num) === "number"; }); }) ; (2认同)

Sla*_*anX 5

看一下Chai Things,它是Chai的一个插件,旨在改善对数组的支持。

例:

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