2016-12-16 63 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