pact:在最终确定之前或之后将契约发布到经纪人

时间:2017-10-14 02:58:55

标签: javascript node.js pact

在我的消费者测试结束时,我需要采取两个步骤:

  1. 完成模拟服务器
  2. 将协议发布给经纪人。
  3. 起初,我是在最终确定之前发布的,就像这样:

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

    我意识到这一点是finalize()是编写pact文件的地方。因此,如果我按此顺序执行操作,则第一次运行测试时,不会发布任何内容,并且随后每次都会发布上一次运行中的合同版本。所以我尝试颠倒顺序,先完成模拟服务器,然后发布:

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

    但是这样,thencatch块都不会被执行。我没有在控制台上打印任何消息。

    发生了什么事?我应该在哪个订单中调用这些函数,为什么第二个订单不起作用?

1 个答案:

答案 0 :(得分:2)

发布契约应该在完成后明确完成。

我建议你完全在一个单独的任务中完成,而不是与测试相同的代码,因为它应该只从CI完成,而不是从本地机器完成。