当前位置: 首页 > 知识库问答 >
问题:

提供程序未注册交互

贝洲
2023-03-14

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

我已经为我的消费者和这个提供者之间的契约创建了一个Pact对象,然后为我的提供者和twilio之间的契约创建了另一个称为twilioPact的对象。我已经为Twilioendpoint添加了一个POST的交互,但是在pact.log中我没有看到它被注册。我的测试正确地发出了请求,但是没有为它注册交互,所以我从模拟服务器得到了500个错误。

有没有人有过与‘提供者’同时也是‘消费者’使用协议的经验?

共有1个答案

云长恨
2023-03-14

这里有几件事需要考虑:

  1. 最好在客户端<->Twilio适配器Twilio适配器<->Twilio之间进行两个单独的契约测试。做你正在做的事情是可能的,但是这会使测试变得更加复杂,很可能更难阅读/理解。隔离测试它们可以使您获得更多的控制。
  2. 在进行前一个契约测试时,而不是为您的Twilio适配器的(提供者)依赖项(Twilio)对另一个pact模拟服务进行菊花链,您最好使用标准的模拟/存根工具来完成这项工作--或者是基于代码的模拟/双模、服务双模(例如,Mountebank),或者是pact[1]附带的存根服务器。不要忘记,您将使用其他合同测试来验证这些假设,因此您可以安全地执行此操作。
  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
 类似资料:
  • 我试着做一些服务,比如在symfony,我是按照一些教程,是做以下步骤:1。创建新的服务提供商: 我正在创建我的自定义助手: 名称空间应用程序\帮助程序; 类MailerHelper实现\Lightning\Contracts\Bus\SelfHandling{ } 我在config/app中注册它。php: 现在最大的问题是如何在我的控制器中调用它。 例如,在symfony中,如果声明一个服务,

  • 本文向大家介绍IIS7.5 提示未在本地计算机上注册“Microsoft.Jet.OleDb.4.0”提供程序,包括了IIS7.5 提示未在本地计算机上注册“Microsoft.Jet.OleDb.4.0”提供程序的使用技巧和注意事项,需要的朋友参考一下 在WIN7 X64平台IIS7.5,使用Asp.net连接access数据库时候,提示:未在本地计算机上注册“Microsoft.Jet.Ole

  • 我跟着http://developer.android.com/guide/google/gcm/gs.html#server-在我的应用程序中实现GCM的应用程序 返回空字符串作为注册ID,还需要什么来获得注册ID??

  • 在Java8中,我通过执行以下步骤全局注册了Bouncy Castle安全提供程序: null

  • 问题内容: 我正在尝试“定制” mongolab示例以适合我自己的REST API。现在我遇到了这个错误,我不确定自己在做什么错: 这是我的控制器: 这是模块: 问题答案: 您的代码看起来不错,实际上,当将其复制并粘贴到示例jsFiddle中时,它可以正常工作(除了调用本身): http //jsfiddle.net/VGaWD/ 很难说发生了什么而没有看到更完整的示例,但是我希望上面的jsFid

  • 问题内容: 我做错了什么? 根据文件,我应该能够注入到......但我得到一个错误- “未知供应商” http://jsfiddle.net/g26n3/ 实际上,我在这里有三个问题… 1)如何注入模块的配置。 2)如何向模块配置注入相同的提供程序()。 3)如果我将相同的提供程序注入到两个模块的配置中,它将是相同的提供程序实例,还是两个不同的实例? 谢谢! 问题答案: 您需要添加“ Provid