我有一个通过MockMvc存根的api(API 1),当我通过该模拟对象在此API上发布时,向外部系统发出请求,该请求又调用了系统的api(API 2)。由于此API 2是通过http通道(host:port)调用的,并且容器未运行,因此会中断。由于我不想更改外部系统调用我的API的方式,因此我该如何处理这种情况。希望我已经澄清了。
答案 0 :(得分:1)
如果您使用的是MockMvc
,则无法通过网络测试呼叫。
因此,在这种情况下,您将需要模拟或存根执行外部网络调用的组件。
另一方面,如果您正在使用Spring Boot ...,则可以让Spring Boot的测试支持启动嵌入式Servlet容器进行测试,并且外部调用可以通过HTTP连接到正在运行的Servlet容器。但是,为此,通常使用诸如Spring Boot的TestRestTemplate
或核心Spring的WebTestClient
(自Spring Framework 5.0起可用)之类的东西代替MockMvc
。