如何在oilbrestserviceserver中通过字符串模式期望请求



我有:

org.springframework.test.web.client.MockRestServiceServer mockServer

当我使用any(String.class)或精确URL运行时,它们效果很好:

mockServer.expect(requestTo(any(String.class)))
.andExpect(method(HttpMethod.GET))
.andRespond(withSuccess("response", MediaType.APPLICATION_JSON));

或:

mockServer.expect(requestTo("https://exact-example-url.com/path"))
.andExpect(method(HttpMethod.GET))
.andRespond(withSuccess("response", MediaType.APPLICATION_JSON));

我想期望通过字符串模式请求,以避免检查确切的URL。我可以像在Spring Mockrestserviceserver上一样编写自定义匹配器,将多个请求处理到同一URI(自动发现)

是否还有其他方法可以通过字符串模式制作mockServer.expect(requestTo(".*example.*"))

我想"任何"实际上是mockito.any()方法?在这种情况下,您可以使用Mockito.Matches(" Regex")。参见文档:https://static.javadoc.io/org.mockito/mockito-core/1.9.5/org/mockito/matchito/matchito/matcher.html#matches(java.lang.lang.string)


编辑:事实证明,oigrestserviceserver使用hamcrest匹配器来验证期望(诸如requestto,withsuccess等方法)。

也有一个方法 matchespattern(java.util.regex.pattern模式)用于解决您的问题。

但是,在您的项目中,您可能对较旧版本的Hamcrest(1.3)有依赖性,例如,Junit 4.12(最新的Spring-Boot-Starter-Starter-test-2.13)使用,或者最后是org。Mock-Server.mockserver-netty.3.10.8(过渡性)。

所以,您需要:

  1. 检查项目中的Hamcrest的实际版本,(如果不是2 )手动更新此依赖性:https://mvnrepository.com/artifact/org.hamcrest/hamcrest/hamcrest/2.1
<dependency>
    <groupId>org.hamcrest</groupId>
    <artifactId>hamcrest</artifactId>
    <version>2.1</version>
    <scope>test</scope>
</dependency>
  1. 更新您的测试:
mockServer.expect(requestTo(matchesPattern(".*exact-example-url.com.*")))
    .andExpect(method(HttpMethod.GET))
    .andRespond(withSuccess("response", MediaType.APPLICATION_JSON));

相关内容

  • 没有找到相关文章

最新更新