Spring Cloud Contract 集成
在这些页面中,您将能够了解不同的 Spring Cloud Contract 集成。
章节总结
JAX-RS
Spring Cloud Contract 支持 JAX-RS 2 客户端 API。基类需要定义受保护的 WebTarget webTarget 和服务器初始化。测试 JAX-RS API 的唯一选项是启动 Web 服务器。此外,带有正文的请求需要设置内容类型,否则将使用默认的 application/octet-stream。
WebFlux 与 WebTestClient
你可以使用 WebTestClient 来操作 WebFlux。以下清单展示了如何将 WebTestClient 配置为测试模式:
WebFlux 显式模式
你也可以在生成的测试中使用显式模式配合 WebFlux 来处理 WebFlux。以下示例展示了如何配置使用显式模式:
自定义模式
Spring Cloud Contract 允许您提供自定义的 org.springframework.cloud.contract.verifier.http.HttpVerifier 实现。这样,您就可以使用任何您想要的客户端来发送和接收请求。Spring Cloud Contract 中的默认实现是 OkHttpHttpVerifier,它使用 OkHttp3 HTTP 客户端。
处理上下文路径
Spring Cloud Contract 支持上下文路径。
使用 REST Docs
你可以使用 Spring REST Docs 为基于 Spring MockMvc 或 WebTestClient 的 HTTP API 生成文档(例如 Asciidoc 格式)。在为 API 生成文档的同时,你还可以通过使用 Spring Cloud Contract WireMock 来生成 WireMock 存根。为此,编写常规的 REST Docs 测试用例,并使用 @AutoConfigureRestDocs 注解,以便在 REST Docs 输出目录中自动生成存根。下面的 UML 图展示了 REST Docs 的流程:
GraphQL
由于 GraphQL 本质上就是 HTTP,你可以通过创建一个标准的 HTTP 契约来为其编写契约,只需添加一个额外的元数据条目,其键为 verifier,映射工具为 graphql。
GRPC
GRPC 是一个构建在 HTTP/2 之上的 RPC 框架,Spring Cloud Contract 对其提供了基础支持。