我试图了解PACT和Spring Cloud Contract之间更好的工具,以实施消费者驱动程序合同测试。 我找不到任何明确的例子来找出利弊。
我想实现CDCT,并且在我的项目中不使用Spring。根据我的理解,我认为PACT很好。
欢迎任何信息或建议。 谢谢。
答案 0 :(得分:4)
Spring Cloud Contract允许您为REST API和消息传递定义和测试合同。它提供了清晰易用的静态类型Groovy DSL,还允许通过yaml定义合同。无论是使用DSL还是使用Yaml,对于熟悉标准HTTP /消息传递术语的人来说,定义合同都是非常直观的,例如:
request {
method PUT()
url '/fraudcheck'
body([
"client.id": $(regex('[0-9]{10}')),
loanAmount: 99999
])
headers {
contentType('application/json')
}
}
response {
status OK()
body([
fraudCheckStatus: "FRAUD",
"rejection.reason": "Amount too high"
])
headers {
contentType applicationJson()
}
}
生产者端测试由SCC自动生成,并在构建过程中添加到项目中。如果没有正确执行合同的实现,则不会构建和部署项目。如果它们通过了,将生成并存储消费者的存根以及相应的工件版本。
在消费者方面,对于HTTP,SCC提供了Stubrunner,该Stubrunner启动Wiremock(内存中的http服务器)实例,该实例提供对匹配请求的存根响应。 Stubrunner可与外部工件存储库(例如Nexus和Artifactory)以及本地m2存储库一起使用。
SCC与SpringBoot无缝集成,并且还与Spring Cloud集成,可以在集成测试期间代替服务发现。
它还与Pact集成在一起,并允许仅使用SCC合同定义时通过钩子利用其他Pact功能。
SCC还提供了基于Docker的选项,用于在JVM以外的技术中实施和测试合同。
免责声明:我是Spring Cloud Contract的撰稿人。