2016-12-29 30 views
0

我有以下記者在protractor.conf文件:Promise改變jenkins工作的exitcode,如何防止這個?

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]); 

上述每個記者都有自己的afterlaunch是可以預期一旦在ptor.conf文件afterlaunch執行來執行。

這是詹金斯持續集成工作的一部分。所以發生的是承諾解決了這個過程的退出代碼變爲0,即使測試失敗,因此覆蓋了作業的退出代碼。因此,即使詹金斯認爲合格的失敗,整個工作都顯示爲「通過」。我需要保留傳遞給上述報告的原始值exitCode以便jenkins作業按照預期發揮作用。我們如何防止這一點?

+0

這是記者這個的當前值?您在量角器中使用哪種測試框架? – cnishina

+0

這是一個茉莉花記者工作正常,但我需要返回的承諾,不要更改過程的退出代碼 – pj013

+0

承諾拒絕? 「記者。推出後」會拋出一個錯誤?如果沒有,那麼我會說諾言按預期工作。 –

回答

0

假設exitCodeNumberresolve.bind(this, exitCode)返回其第一參數的那些VARS(promise1和promise2)被聲明

所以時間承諾之間EXITCODE任何變化的時間被綁定到的exitCode的值的函數並且當reporter1.afterLaunch回調被觸發時將不會反映在那些承諾解析的值中,

即,假設創建promise時exitCode爲零,那麼無論exitCode是什麼,解析值都將爲零更改爲

在另一方面

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

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

將解析爲退出碼