【发布时间】:2018-09-21 16:30:21
【问题描述】:
存根映射
{
"request": {
"method": "GET",
"urlPathPattern": "/validation/session/([a-zA-Z0-9/-]*)"
},
"response": {
"status": 200,
"jsonBody": {
"isIpBlocked": "Y",
"serviceMessage": {
"type": "OK",
"code": "200",
"description": "IP validated successfully. No result found"
}
},
"headers": {
"Content-Type": "application/json"
}
}
}
无法匹配网址
https://mywebsite/validation/session/687d69ae-42a8-4584-a395-8e0c876bacae (绝对路径和相对路径都不行)
还尝试用 urlPattern 替换 urlPathPattern,但没有成功
尝试了以下所有组合。没有任何效果
/validation/session/([a-zA-Z0-9\\-]+)
/validation/session/([a-zA-Z0-9\\-]*)
/validation/session/([a-zA-Z0-9/-]+)
/validation/session/([a-zA-Z0-9/-]*)
注意: Wiremock 版本 2.18.0,Spring Boot 2.0
实际上,除了 url(在带有绝对 URL 的存根映射中)之外,没有什么对我有用。
如果我单独使用 Wiremock,它会完美运行。如果我将 Wiremock 与 WireMockRestServiceServer (spring-cloud-contract) 结合使用,它将不起作用。
工作代码 - 单独使用 Wiremock
@Rule
public WireMockRule wireMockRule = new WireMockRule(wireMockConfig().port(8080).httpsPort(443));
stubFor(get(urlMatching("/validation/session/([a-zA-Z0-9/-]*)")) .willReturn(aResponse().withStatus(HttpStatus.OK.value()).withHeader("Content-Type", "application/json")
.withBody("{\"isIpBlocked\": \"Y\"}")));
不工作 - 使用 WireMockRestServiceServer 编写代码
MockRestServiceServer server = WireMockRestServiceServer.with(this.restTemplate)
.stubs("classpath:/stubs/**/validate-ip-success-mock-response.json").build();
【问题讨论】:
-
您的
urlPathPattern是绝对网址,您尝试过相对路径吗? -
另外,请举例说明正在为您工作。如果没有任何效果,那么我们可能需要更多信息来帮助您,因为问题可能在您的配置中的其他地方。
-
您可能想要编辑您的第一个存根映射 sn-p。您的 urlPathPattern 正则表达式缺少右括号
([a-zA-Z0-9/-]* -
只是复制粘贴错误。我只是添加了括号。这更像是一个 WireMockRestServiceServer 问题。它与 Wiremock 无关。
标签: regex spring-boot junit testcase wiremock