在编写一个包含大量异步操作的相当大的JavaScript模块时,所有这些都处理promises,调试并遵循promises的流程/状态变得非常困难。
是否有任何工具或框架可用于检测测试或模块代码,以便为我的系统中的所有Promise提供流量?如果重要的话,我正在使用jQuery承诺。
答案 0 :(得分:2)
在我的脑海中,受到@ MrLeap发送消息到console
的想法的刺激,如何通过自己设计的“适配器”创建Deferreds。
例如(胚胎和未经测试):
var debugMode = true;
function DeferredAdapter(name) {
var dfrd = $.Deferred();
if(debugMode) {
dfrd.notify = function() {
console.log(name + ': notify');
if (arguments[0] && typeof arguments[0] == "string")
console.log(arguments[0]);
};
//similar for resolve
//similar for reject
}
return dfrd;
}
这种方式(当你运行它时),你可以在调试时做额外的事情,用一种简单的机制来关闭生产代码中的额外内容,而无需通过所有代码清除{{1语句。
答案 1 :(得分:1)
这会增加相当多的开发开销,但如果您使用节点作为后端,则可以使用vows.js实现非常强大的异步单元测试。如果您想为自己添加更多工作,如果您正在使用其他类型的服务器技术,则可以使用誓言创建所有响应的模拟版本,并将其用于测试和报告。使用node.js模拟服务器还可以让你做出健壮的企业^^之类的事情,比如模拟某些请求无法看到你的前端如何优雅地响应它。
我希望我有一个比这更好的答案; console.log
和console.dir
是您最好的朋友。把你的回调塞满他们,这样你就可以知道事情发生了多长时间,以及它们发生的顺序。