让动态"它基于"中定义的数组开始工作"在mochajs?

时间:2015-01-02 17:43:37

标签: node.js mocha

有谁知道如何完成这样的事情:

describe('dynamic array test', function(){
    var checks;
    before(function(){
        checks = [];
        for(var i = 0; i < 50; i++){
            checks[i] = Math.floor((Math.random() * 10) + 1);
        }
    });
    for(var check in checks){
        it("check #" + check, function(){
            expect(checks[check]).to.equal(1);
        });
    }
});

基本上我有一个我之前生成的数组,我想要&#34;它&#34;输出反映然后执行。

2 个答案:

答案 0 :(得分:1)

可以在循环中生成测试但是生成测试的代码(即调用it)不能依赖于执行的计算结果像before这样的钩子。 (注意这里我说生成测试的代码不能依赖于在钩子中执行的计算。测试中的代码取决于在钩子中执行的计算。)原因在于Mocha如何发现并执行您的测试,我已经解释过here

您可以这样做:

var expect = require('chai').expect;

describe('dynamic array test', function(){
    for(var i = 0; i < 50; i++){
        it("check #" + i, function(){
            expect(Math.floor((Math.random() * 10) + 1)).to.equal(1);
        });
    }
});

答案 1 :(得分:-1)

你看起来很好,但你可能需要更新:

for(var check in checks){
    it("check #" + check, function(){
        expect(checks[check]).to.equal(1);
    })
}

for(var check in checks){
    (function () {
        it("check #" + check, function(){
            expect(checks[check]).to.equal(1);
        })
    })()
}

确保在每次测试中使用 check 的正确值。