2016-12-16 25 views
1

我有以下记者如何返回多个记者在量角器afterlaunch功能,在承诺包装?

afterLaunch: function (exitCode) { 

    return new Promise(function (resolve) { 
     reporter1.afterLaunch(resolve.bind(this, exitCode)); 
    }); 

    return new Promise(function (resolve) { 
     reporter2.afterLaunch(resolve.bind(this, exitCode)); 
    }); 
} 

上述每个记者都有自己的afterlaunch是可以预期一旦在ptor.conf文件afterlaunch执行来执行。

但显然是因为return new Promise,第一个报告从那里返回并执行在那里停止。

如何能够同时返回两个报告?

回答

4

您需要Promise.all()(或protractor.promise.all()如果您在操作webdriver的承诺):

var promise1 = new Promise(function (resolve) { 
    reporter1.afterLaunch(resolve.bind(this, exitCode)); 
}); 

var promise2 = new Promise(function (resolve) { 
    reporter2.afterLaunch(resolve.bind(this, exitCode)); 
}); 

return Promise.all([promise1, promise2]); 
+0

上述方案完美的作品,但是这是在詹金斯的持续集成工作的一部分。所以发生的是,承诺解决了退出代码变为0,即使测试失败,因此覆盖作业的退出代码。所以即使詹金斯表现出合格的失败。我需要保留传递给上述jenkins作业报告的exitCode的原始值,以便按预期工作。我们如何防止这一点? – pj013

+0

@ pj013明白了,请您为此问题创建一个单独的问题?这样,更多的人可以帮助解决它。谢谢! – alecxe

+0

关于此任何想法:http://stackoverflow.com/questions/41386162/promises-change-the-exitcode-of-the-jenkins-job-how-to-prevent-this/41389265#41389265 – pj013