gpt4 book ai didi

go - 提供者未注册交互

转载 作者:数据小太阳 更新时间:2023-10-29 03:03:26 28 4
gpt4 key购买 nike

我正在使用 Pact Go implementation尝试契约(Contract)测试。我做了一个无法正常工作的提供商测试,因为我需要模拟我的服务对 Twilio 的请求。

我为我的消费者和该提供者之间的契约(Contract)创建了一个 Pact 对象,然后为我的提供者和 Twilio 之间的契约(Contract)创建了另一个名为 twilioPact 的对象。我已将 POST 的交互添加到 Twilio 端点,但在 pact.log 中我没有看到它已注册。我的测试正确发出了请求,但没有为它注册交互,所以我从模拟服务器收到 500 错误。

有没有人有将 Pact 与同时也是“消费者”的“提供者”一起使用的经验?

编辑:在与 Matt Fellows 交谈后,我被告知我使用 Pact 不正确,不应该在运行提供者验证时尝试运行模拟服务。我也曾怀疑过,但我看到的所有示例都不是针对具有依赖性的提供者的。通过编写消费者测试并将生成的 pact 文件传递​​给 pact-stub-service 以充当 Twilio 的模拟,我能够让我的提供者验证工作。

最佳答案

这里有几点需要考虑:

  1. 最好在您的 client 之间进行两个单独的契约(Contract)测试<-> Twilio Adapter , 和 Twilio Adapter <-> Twilio .做你正在做的事情是可能的,但它会使测试更复杂并且可能更难阅读/理解。单独测试它们可以让您拥有更多控制权。
  2. 在进行前一个契约(Contract)测试时,而不是为您的 Twilio 适配器(提供者)依赖项 (Twilio) 菊花链式连接另一个契约(Contract)模拟服务,您最好使用标准模拟/ stub 工具来完成这项工作 - 基于代码的模拟/ double ,服务替身(例如 Mountebank)或 Pact [1] 附带的 stub 服务器。不要忘记您将通过其他契约(Contract)测试来验证这些假设,因此您可以安全地进行此操作。
  3. 可能是因为您有两个模拟服务器在运行(一个模拟 Twilio 适配器,另一个模拟 Twilio),所以您的请求被发送到相同 模拟服务,并且所有这些都纠缠在一起

[1] 以下是 pact-go 附带的二进制文件等列表:

    tree -L 3 /path/to/pact-go

.
├── pact
│   ├── README.md
│   ├── bin
│   │   ├── pact-broker
│   │   ├── pact-mock-service
│   │   ├── pact-provider-verifier
│   │   ├── pact-publish
│   │   └── pact-stub-service
│   └── lib
│   ├── app
│   ├── ruby
│   └── vendor
└── pact-go

关于go - 提供者未注册交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49283145/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com