契约:在最终确定之前或之后,向经纪公司发布契约
在我的消费者testing结束时,我需要采取两个步骤:
- 最后确定模拟服务器
- 将该协议发布给经纪人。
起初,我在出版之前是这样发表的:
var opts = { //broker info } pact_node.publishPacts(opts).then(() => { provider.finalize() }).catch(() => { console.error("Could not publish pact!") provider.finalize() })
我意识到这一点是finalize()
是pact文件写入的地方。 所以如果我按照这个顺序做事情,那么第一次运行testing时,什么都不会发布,随后的每一次我都会发布上一次运行的合同版本。 所以我试着颠倒了顺序,先完成模拟服务器,然后发布:
provider.finalize().then(() => { console.log("Publishing pact to broker") pact_node.publishPacts(opts) }).catch(() => { console.error("Could not finalize provider!") })
但是就此而言, then
和catch
区块都不会被执行。 我没有得到任何消息打印到控制台。
到底是怎么回事? 我应该在哪些顺序中调用这些函数,为什么第二个顺序不起作用?
最终确定后,发布协议应该是明确的。
我build议你在一个单独的任务中完成它,而不是与testing相同的代码,因为它只能从CI完成,而不是从本地机器完成。