我正在尝试使用 for 循环动态生成测试,但要生成的测试数量是从异步任务中获得的。这是我的代码:
var noOfTestsToRun;
before(function() {
return someAsyncTask().then(function(result) {
noOfTestsToRun = result;
})
});
describe('My Test Suite', function() {
for (var i = 0; i < noOfTestsToRun; i++) {
it('Test ' + i, function() {
//...
});
}
});
Run Code Online (Sandbox Code Playgroud)
但是,noOfTestsToRun = result当它到达for循环时似乎没有被执行。
我想知道是否有解决此类问题的方法。谢谢你。
将回调传递done给您的before函数。
var noOfTestsToRun;
before(function(done) {
return someAsyncTask().then(function(result) {
noOfTestsToRun = result;
// Complete the async stuff
done();
})
});
describe('My Test Suite', function() {
for (var i = 0; i < noOfTestsToRun; i++) {
it('Test ' + i, function() {
//...
});
}
});
Run Code Online (Sandbox Code Playgroud)
当您的异步任务完成并被done()调用时,我们告诉 Mocha 异步任务已完成并且可以继续实现预期。
更新
因此,您的目标是让 mocha 运行动态测试。
您可以通过一些技巧来实现这一点。您将需要一个it块来强制before执行。在此之前,您可以it根据异步结果动态生成测试。
before(function() {
return someAsyncTask().then(function(result) {
describe('My Test Suite (dynamic)', function() {
for (var i = 0; i < result; i++) {
it('Test ' + i, function() {
// ...
});
}
});
});
});
it('should force before to execute', function() {
console.log('Hack to force before to execute');
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4240 次 |
| 最近记录: |