mocha:如何确保在测试运行之前完成多个异步操作

时间:2017-08-09 14:26:37

标签: javascript promise mocha

以下代码中有两个异步操作:1,this.OBJ.create,2,this.OBJ.create将发出事件并应调用this.callback。并非所有这些都是承诺,因此all无法使用。如何确保在测试之前完成这两项操作。

describe('CREATE OBJ', function _test() {
  before(function(done) {
    this.callback = function(obj) {
      console.log('callback called.');
      this.obj = obj;
      done();
    }.bind(this);

    return this.OBJ.create(null, {})
        .bind(this)
        .then(function(obj) {
          this.obj = obj;
          console.log('this.obj created.');
        });
// this.OBJ.create will emit the event and this.callback should be called.
  });

  after(function() {
    console.log('this.obj.destroy() called.');
    return this.obj.destroy();
  });

  it('should run test', function() {
    console.log('test run.');
    ...
    console.log('test finished.');
  });
});

以下代码如何:

describe('CREATE OBJ', function _test() {
  before(function() {
    this.callback = function(obj) {
      console.log('callback called.');
      this.obj = obj;
    }.bind(this);
    return this.OBJ.create(null, {})
      .bind(this)
      .then(function(obj) {
        this.obj = obj;
        console.log('this.obj created.');
      })
      .delay(100);
    // this.OBJ.create will emit the event and this.callback should be called.
  });

  after(function() {
    console.log('this.obj.destroy() called.');
    return this.obj.destroy();
  });

  it('should run test', function() {
    console.log('test run.');
    ...
    console.log('test finished.');
  });
});

我不确定done中的return promisebefore。欢迎任何评论。感谢

更新

我删除了一些代码,使我的问题集中在how to make sure multiple async actions done before test run

一些细节: 1,OBJ是EventEmitter的实例。在发出事件后将调用回调。

2,这个.OBJ已经设置好了。

0 个答案:

没有答案