spring 模拟 mvc 测试 api 从外部系统调用
spring mock mvc tests with api being invoked from external system
我有一个 api(API 1) 正在通过 MockMvc.When 我 post 通过这个模拟对象在这个 API 上存根,一个请求发送到外部系统,后者又调用我系统的 api (API 2)。由于此 API 2 是通过 http 通道 (host:port) 调用的,并且容器不是 运行,因此中断。我该如何处理这种情况,因为我不想更改外部系统调用我的 API 的方式。希望我已经澄清了。
如果您使用的是 MockMvc
,则无法通过网络测试呼叫。
所以在那种情况下,您需要模拟或存根执行外部网络调用的组件。
另一方面,如果您正在使用 Spring Boot... 您可以让 Spring Boot 的测试支持启动嵌入式 Servlet 容器进行测试,外部调用可以连接到运行 HTTP 上的 Servlet 容器。但是,为此,您通常会使用 Spring Boot 的 TestRestTemplate
或核心 Spring 的 WebTestClient
(自 Spring Framework 5.0 起可用)而不是 MockMvc
.
我有一个 api(API 1) 正在通过 MockMvc.When 我 post 通过这个模拟对象在这个 API 上存根,一个请求发送到外部系统,后者又调用我系统的 api (API 2)。由于此 API 2 是通过 http 通道 (host:port) 调用的,并且容器不是 运行,因此中断。我该如何处理这种情况,因为我不想更改外部系统调用我的 API 的方式。希望我已经澄清了。
如果您使用的是 MockMvc
,则无法通过网络测试呼叫。
所以在那种情况下,您需要模拟或存根执行外部网络调用的组件。
另一方面,如果您正在使用 Spring Boot... 您可以让 Spring Boot 的测试支持启动嵌入式 Servlet 容器进行测试,外部调用可以连接到运行 HTTP 上的 Servlet 容器。但是,为此,您通常会使用 Spring Boot 的 TestRestTemplate
或核心 Spring 的 WebTestClient
(自 Spring Framework 5.0 起可用)而不是 MockMvc
.