PACT与Spring Cloud合约测试

时间:2018-08-27 06:32:11

标签: pact spring-cloud-contract

我试图了解PACT和Spring Cloud Contract之间更好的工具,以实施消费者驱动程序合同测试。 我找不到任何明确的例子来找出利弊。

我想实现CDCT,并且在我的项目中不使用Spring。根据我的理解,我认为PACT很好。

欢迎任何信息或建议。 谢谢。

1 个答案:

答案 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的撰稿人。