如果在抛出任何错误的时候如何在promise中做出断言,不会冒出来呢?

与摩卡运行这个结果超时,而不是让摩卡赶上错误,所以它可能会立即失败..

var when = require('when'); var should = require('should'); describe('', function() { it('', function(done) { var d = when.defer(); d.resolve(); d.promise.then(function() { true.should.be.false; false.should.be.true; throw new Error('Promise'); done(); }); }); }); 

http://runnable.com/me/U7VmuQurokZCvomD

是否有另外一种方式在诺言中作出断言,如果失败,他们会被摩卡抓住,导致立即失败?


根据柴的build议,我研究了它,似乎我必须有一个直接访问的承诺对象,对不对? 问题是,我没有直接使用诺言。如果我简化,我的坏,但这将是一个更接近现实的例子

 function core_library_function(callback){ do_something_async(function which_returns_a(promise){ promise.then(function(){ callback(thing); }); }); } describe('', function() { it('', function(done) { core_library_function(function(thing){ ... done(); }); }); }); 

所以我实在无法直接控制这个承诺,它被抽象得太远了。

当使用Mocha的承诺时,您必须在testing中return承诺,并且希望删除done参数,因为callback没有被使用。

 it('', function() { var d = when.defer(); d.resolve(); return d.promise.then(function() { throw new Error('Promise'); }); }); 

在“ 与承诺一起工作”的文档中对此进行了描述:

或者,不要使用done()callback,而是可以返回一个promise。

Interesting Posts