Javascript 茉莉花测试中蓝鸟承诺的警告
我已经阅读了关于新警告的内容,并且有一个相关的问题 在我的一些单元测试中,我使用Jasmine的spyOn函数删除了某些依赖项的功能,以返回承诺。因此,有了这个新的变化,我在测试运行时看到了很多警告。我当然可以禁用警告,但我想知道是否有一种改进的方法可以用来自然地消除此类错误 例如:Javascript 茉莉花测试中蓝鸟承诺的警告,javascript,node.js,promise,bluebird,Javascript,Node.js,Promise,Bluebird,我已经阅读了关于新警告的内容,并且有一个相关的问题 在我的一些单元测试中,我使用Jasmine的spyOn函数删除了某些依赖项的功能,以返回承诺。因此,有了这个新的变化,我在测试运行时看到了很多警告。我当然可以禁用警告,但我想知道是否有一种改进的方法可以用来自然地消除此类错误 例如: beforeEach(function (done) { var formatter = new Formatter(); var promise = Promise.resolve(['1,000',
beforeEach(function (done) {
var formatter = new Formatter();
var promise = Promise.resolve(['1,000', '2.45']);
spyOn(formatter, 'format').and.returnValue(promise);
// internally calls formatter.format()
doStuff(formatter, [1000, 2.4567]).then(done);
// promise is not returned
});
如果需要的话,可以添加一个完整的工作Plunk吗?问题是jasmine的
done
回调返回任何东西,所以当你执行时,(done)
你会触发蓝鸟的警告
我通过向Promise对象添加一个新方法解决了这个问题:
var Promise = require('bluebird');
Promise.prototype.jasmineDone = function(done) {
return this.then(function() {
done();
return null;
}, function(err) {
done.fail(err);
return null;
});
};
然后我重构了我的规范(这会触发警告):
致:
是否会返回
兑现承诺,而不是传递已完成
回调是否有效?那么你应该这样做。你是说返回doStuff()…
?如果是这样,我仍然相信您看到了警告,因为promise
不会被返回。
it('should ...', function(done) {
doSomething().then(done, done.fail);
});
it('should ...', function(done) {
doSomething().jasmineDone(done);
});