2016-05-17 52 views
-1

使用ember mocha和chai可能有两个dones在Ember mocha和Chai中使用两个`done`函数

试图做这样的事情(不工作)

function doSomething() { 
    it('somethinng else', function(done) { 
    var res = false 
    Ember.run.later(() => { 
     expect(res).to.be.true 
     done() 
    }) 
    }) 
} 
it('somethinng', function(done) { 
    doSomething() 
    Ember.run.later(() => { 
    //do other things 
    done() 
    }) 
}) 

但我不想说的不一定是something实际进行。什么是测试一个摩卡/柴实验二异步函数的正确方法

一个很好的选择是,如果他们是摩卡或柴一些功能,相当于Qunit的assert.async https://api.qunitjs.com/async/

回答

1

您最初的尝试不能工作因为摩卡不允许嵌套it调用(即it不能调用it)。如果要链接两个采用回调的异步操作,则可以将自定义回调传递给第一个,并将itdone传递给第二个。适应代码:

function doSomething (done) { 
    var res = false; 
    Ember.run.later(() => { 
     expect(res).to.be.true; 
     done(); 
    }); 
} 

it('something', function (done) { 
    doSomething(function() { 
     doSomethingElse(done); 
    }); 
}); 

doSomethingElsedoSomething运行后完成。我假定doSomethingElse是一些需要回调来通知完成的异步操作。

+0

这个答案与我的工作方式不完全相同,但仍然没有我想要的功能?并且仍然只使用一个完成的操作 – Hillboy

+0

那么,你的问题还不清楚。 – Louis

相关问题