我正在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)
- })
- })