有谁知道如何完成这样的事情:
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;输出反映然后执行。
答案 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 的正确值。