【发布时间】:2016-04-11 18:11:28
【问题描述】:
我正在尝试编写一个自定义 mocha 报告器,该报告器与具有 HTTP API 的第三方集成。
我采用了自定义报告器 (https://github.com/mochajs/mocha/wiki/Third-party-reporters) 给出的基本示例,并尝试在启动事件处理程序中添加对 API 的调用。但是,我对第三方的 http 请求的回调似乎永远不会触发。示例代码如下所示。
我已经测试了请求代码在其他上下文中是否按预期工作,只是似乎在 mocha 报告器的事件处理程序中没有任何反应。
注意 - 请原谅当前的黑客等待回调的结果,我只是想确保在回调有机会触发之前我没有退出,我会在它工作时整理它!
var request = require('request');
module.exports = function (runner) {
var passes = 0;
var failures = 0;
runner.on('start', function() {
var callbackFired = false;
request('http://www.testapi.com', function (error, response, body) {
callbackFired = true;
});
while(!callbackFired){
console.log('waiting...');
}
});
runner.on('pass', function(test){
passes++;
console.log('pass: %s', test.fullTitle());
});
runner.on('fail', function(test, err){
failures++;
console.log('fail: %s -- error: %s', test.fullTitle(), err.message);
});
runner.on('end', function(){
console.log('end: %d/%d', passes, passes + failures);
process.exit(failures);
});
};
【问题讨论】:
标签: node.js asynchronous callback mocha.js