我正在使用Pact Go implementation来尝试合同测试。我做了一个不起作用的提供者测试,因为我需要模拟我的服务请求Twilio。
我为我的消费者和这个提供者之间的合同制作了一个Pact对象,然后另一个为我的提供者和Twilio之间的合同打了一个名为twilioPact的对象。我已经为POST添加了一个与Twilio端点的交互,但是在pact.log中我没有看到它被注册。我的测试是正确地发出请求,但没有为它注册任何交互,所以我从模拟服务器得到500错误。
是否有人使用Pact与“提供者”同时也是“消费者”?
编辑:在与Matt Fellows交谈后,我被告知我错误地使用了Pact,并且在运行提供程序验证时不应该尝试运行模拟服务。我一直怀疑,但我见过的所有例子都不是一个有依赖的提供者。通过编写使用者测试并将生成的pact文件传递给pact-stub-service以充当Twilio的模拟,我能够使我的提供者验证工作。答案 0 :(得分:2)
以下是需要考虑的一些事项:
client
< - >之间进行两次单独的合同测试。 Twilio Adapter
和Twilio Adapter <-> 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