我有一个带有REST API的Spring Boot应用程序。在幕后,它使用Vended SDK致电供应商服务。我需要在应用程序上运行负载测试,但不想致电供应商API并在测试过程中意外崩溃。
是否可以在Junit测试之外使用Mockito在正常应用程序运行时为供应商SDK对象创建模拟?
我认为我将使用基于配置文件的配置光束来启用模拟对象,当时配置文件为"性能测试"。但是我找不到这种方式使用Mockito的文章/讨论/提及,这使我第二次猜测我的方法。想法?
您可能应该寻找使用Wiremock或类似软件模拟供应商服务的服务,例如:与假服务器进行集成测试
WireMock是一台存根服务器,您可以在Junit测试中方便地启动/停止。设置响应时,它的作用类似于远程服务器。该文档真的很好,我不想在这里复制所有内容。
只是一个样本:
public class MyTest {
@Rule
public WireMockRule wireMockRule = new WireMockRule(wireMockConfig().dynamicPort().dynamicHttpsPort());
@Test
public void exampleTest() {
stubFor(get(urlEqualTo("/my/resource"))
.willReturn(aResponse()
.withStatus(200)
.withBody("<response>Some content</response>")));
...
verify(postRequestedFor(urlMatching("/my/resource/[a-z0-9]+"))
.withRequestBody(matching(".*<message>1234</message>.*")));
}
}
对于LoadTest,您宁愿在某个地方运行存根,并设置了一些脚本。
您可能没有提及Mockito,因为将模拟嵌入使用量响应到您的应用程序是一个坏主意,并且无法帮助您获得负载测试的现实结果(因为您的响应将更快,并且不会通过序列化/挑战)。
其他也可以在这里看:如何使用Spring模拟远程REST API?