【问题标题】:Publishing results of pact-verify to pact-broker将 pact-verify 的结果发布到 pact-broker
【发布时间】:2017-11-21 17:11:29
【问题描述】:

我在 pact 方面有点新手,我正在尝试使用 pact 进行一些 POC,但我遇到了从 pact-verify 发回提供者测试结果的问题。

在本地设置了我的协议经纪人,并已从消费者那里发布了协议。之后我使用:

'sbt "pact-verify --host localhost --port 8081"' 结果:

[...] 试图从契约经纪人那里获取契约:http://localhost:8080/pacts/provider/Provider/consumer/Consumer/latest [...] ...并且所有测试都通过了。 (是的,在 8080 上获得了经纪人,在 8081 上获得了服务)

之后,我可以在测试报告中看到我的 Consumer_Provider.xml 报告,但我没有在我的 pact-broker 服务上看到任何结果。 我已经编辑了 pact.sbt/build.sbt 以不使用本地存储的协议,根据文档,它应该会自动出现在那里,因为它直接使用代理的协议。

我错过了什么吗?或者 scala-pact 不支持这样的事情? [我使用 scala 是否重要,或者它无关?]

提前致谢。 马立克

【问题讨论】:

    标签: scala pact


    【解决方案1】:

    我想到了两件事。第一个是在没有打开该功能的情况下,任何验证工具都不会自动发布验证。例如,您不想从本地机器发布验证 - 只是从 CI 机器。查看文档或代码,看看是否有标志。您还需要提供提供程序版本号。

    其次,验证发布可能还没有在 sbt 工具中实现。我会和 JVM Pact 作者核实一下。

    【讨论】:

    • 你在使用这个实现吗? github.com/ITV/scala-pact 它不像其他 JVM 实现那样最新。我建议在他们的存储库中提出一个功能,并在其中标记我,以便我可以提供要求(@bethesque)这是更“标准”的 JVM 实现github.com/DiUS/pact-jvm
    • 我已经设置了我的提供程序版本和名称。不幸的是,我无法找到启用发布的标志,所以我相信您可能是对的,但它尚未实施。无论如何都会给它更多的镜头。您是否看到手动将此结果导出到经纪人的任何可能性?那也不会那么糟糕。你是对的,此时我正在使用 ITV 实施。由于它是 POC 到目前为止我会坚持这一刻。在实际项目中使用时,您会建议哪种实现方式?我相信有据可查的一个将是我的最爱。感谢您的宝贵时间!
    • github.com/DiUS/pact-jvm 的实现功能齐全,是我推荐的。这里是验证结果 API github.com/pact-foundation/pact_broker/blob/master/lib/… 的文档请注意,您希望同时发布成功和失败,因此如果您将其放在单独的进程中,请注意许多构建/脚本会因错误而停止的事实。您还希望发布每个协议的结果,因此如果您要验证多个协议,一个失败不应导致另一个失败。
    • 第 2 部分,字符用完了。由于我刚才提到的原因,正确的实现需要发布代码是验证运行程序本身的一部分,因为它需要单个协议验证的结果,而不是整体结果。但是,如果您只是将一个协议作为 POC 来验证,那么您会没事的。
    【解决方案2】:

    验证协议时,请确保您将值 publishVerificationResult: true 作为选项,以便发布协议。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-24
      • 1970-01-01
      • 1970-01-01
      • 2022-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-22
      相关资源
      最近更新 更多