我正在Mocha / Node js中编写测试,并希望在执行代码块之前使用setTimeout等待一段时间.
我怎么能做到这一点?
看来在Mocha测试用例中,setTimeout()不起作用. (我知道你可以为每个测试用例和每个测试文件设置setTimeout,这不是我在这里需要的.)
在使用Node运行的js文件中,即节点miniTest.js,这将等待3秒,然后在setTimeout函数内打印该行.
miniTest.js
console.log('waiting 3 seconds...'); setTimeout(function() { console.log('waiting over.'); },3000);
在使用Mocha运行的js文件中,即mocha smallTest.js,这将不会等待,并且将完成执行并退出而不会在setTimeout函数内打印该行.
smallTest.js:
mocha = require('mocha'); describe('small test',function() { it('tiny test case',function() { console.log('waiting 3 seconds...'); setTimeout(function () { console.log('waiting over.') },3000); }); });
解决方法
您忘记在setTimeout方法中的console.log之后传递参数(‘tiny test case’,function()和call done()).
describe('small test',function(){ it('tiny test case',function(done){ console.log('waiting 3 seconds'); setTimeout(function(){ console.log('waiting over.'); done(); },3000) }) })