2017-10-14 58 views
1

後有2個步驟我需要我的消費者測試結束:協議:發佈協議,以代理之前或敲定

  1. 完成模擬服務器
  2. 發佈協議,以代理。

起初,我正在完成,這樣才發佈:

var opts = { 
    //broker info 
} 
pact_node.publishPacts(opts).then(() => { 
    provider.finalize() 
}).catch(() => { 
    console.error("Could not publish pact!") 
    provider.finalize() 
}) 

我意識到這個是什麼finalize()是在協議文件被寫入。因此,如果我按照這個順序執行操作,那麼第一次運行測試時,什麼都不會發布,隨後每發佈一次上一次運行的合同版本。所以我試圖扭轉的順序,先完成模擬服務器,然後發佈:

provider.finalize().then(() => { 
    console.log("Publishing pact to broker") 
    pact_node.publishPacts(opts) 
}).catch(() => { 
    console.error("Could not finalize provider!") 
}) 

但與此,無論是then也不catch塊不斷得到執行。我沒有收到任何消息打印到控制檯。

這是怎麼回事?我應該在哪些順序中調用這些函數,爲什麼第二個順序不起作用?

回答

2

發佈契約應在完成後明確完成。

我建議你在一個單獨的任務中完成它,而不是與測試相同的代碼,因爲它只能從CI完成,而不是從本地機器完成。