提供商未注册交互

时间:2018-03-14 16:33:44

标签: go pact pact-go

我正在使用Pact Go implementation来尝试合同测试。我做了一个不起作用的提供者测试,因为我需要模拟我的服务请求Twilio。

我为我的消费者和这个提供者之间的合同制作了一个Pact对象,然后另一个为我的提供者和Twilio之间的合同打了一个名为twilioPact的对象。我已经为POST添加了一个与Twilio端点的交互,但是在pact.log中我没有看到它被注册。我的测试是正确地发出请求,但没有为它注册任何交互,所以我从模拟服务器得到500错误。

是否有人使用Pact与“提供者”同时也是“消费者”?

编辑:在与Matt Fellows交谈后,我被告知我错误地使用了Pact,并且在运行提供程序验证时不应该尝试运行模拟服务。我一直怀疑,但我见过的所有例子都不是一个有依赖的提供者。通过编写使用者测试并将生成的pact文件传递给pact-stub-service以充当Twilio的模拟,我能够使我的提供者验证工作。

1 个答案:

答案 0 :(得分:2)

以下是需要考虑的一些事项:

  1. 最好在client&lt; - &gt;之间进行两次单独的合同测试。 Twilio AdapterTwilio Adapter <-> Twilio。可以做你正在做的事情,但它会使测试更复杂,可能更难阅读/理解。单独测试它们可以让您获得更多控制权。
  2. 在进行前合同测试时,而不是菊花链为您的Twilio Adapter(提供商)依赖(Twilio)的另一个pact模拟服务,您最好使用标准的模拟/存根工具来完成这项工作 - 基于代码的模拟/双打,服务双打(例如Mountebank)或Pact [1]附带的存根服务器。不要忘记,您将通过其他合同测试来验证这些假设,因此您可以安全地执行此操作。
  3. 可能因为你有两个模拟服务器正在运行(一个模拟Twilio适配器而另一个模拟Twilio)你的请求被发送到相同的模拟服务,并且搞得一团糟
  4. [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
    
相关问题