以下代码中有两个异步操作: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 promise
和before
。欢迎任何评论。感谢
更新
我删除了一些代码,使我的问题集中在how to make sure multiple async actions done before test run
。
一些细节: 1,OBJ是EventEmitter的实例。在发出事件后将调用回调。
2,这个.OBJ已经设置好了。