首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mocha不会在after()函数中调用rmdir

Mocha不会在after()函数中调用rmdir
EN

Stack Overflow用户
提问于 2013-02-26 09:59:22
回答 1查看 977关注 0票数 2

我尝试在测试前创建一些目录树,并在测试结束后将其删除:

代码语言:javascript
复制
require('should');
var fs = require('fs');
var rmdir = require('rmdir');

describe('FsWatcher', function() {
  before(function(done) {
    console.log("before");
    fs.mkdir('tmp');
    fs.mkdir('tmp/css');
    fs.mkdir('tmp/js');
    fs.mkdir('tmp/lib');
    fs.open('tmp/index.htm', 'w');
    // (...)
    console.log("after_before");
    done();
  });

  describe('single file', function() {
    it('should succed', function(done) {
      (1).should.equal(1);
      done();
    });
  });

  after(function() {
    console.log("after");
    rmdir('tmp', function() {
        console.log("rmdir!");
    });
    console.log("after_end");
  });
});

console.log%s的顺序是OK:

代码语言:javascript
复制
mocha `find tests -name '*.js'`

  before
after_before
․after
after_end


  ✔ 1 test complete (6 ms)

但是它不调用rmdir()。当rmdir位于before()的末尾时,相同的rmdir也有效

代码语言:javascript
复制
describe('FsWatcher', function() {
  before(function(done) {
    console.log("before");
    fs.mkdir('tmp');
    fs.mkdir('tmp/css');
    fs.mkdir('tmp/js');
    fs.mkdir('tmp/lib');
    fs.open('tmp/index.htm', 'w');
    // (...)
    console.log("after_before");
    rmdir('tmp', function(){
        console.log("rmdir!");
    });
    done();
  });
});

控制台:

代码语言:javascript
复制
mocha `find tests -name '*.js'`

  before
after_before
 rmdir!
after
after_end

为什么它不能在after()中工作

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-26 12:01:19

测试结束得太快了。您需要使用after的异步版本。

代码语言:javascript
复制
after(function(done) {
    console.log("after");
    rmdir('tmp', function() {
        console.log("rmdir!");
        done();
    });
    console.log("after_end");
});

哪一项应该输出:

代码语言:javascript
复制
 after
 after_end
 rmdir!

当你从before()调用它时,它看起来能工作的原因是因为还有很多其他的事情发生,所以rmdir将被调用,但稍后当节点返回到事件循环时。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15080068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档