Encoding 参数中编码的特殊字符导致spring引导契约测试查询不匹配问题
在编写消费者端的spring引导契约测试时,当请求参数包含特殊字符时,我遇到了问题。他们会自动编码导致测试失败,因为Spring认为“查询不匹配” ”自动制动" 已编码为“%E8%87%AA%E5%8A%A8%E5%88%B6%E5%8A%A8” 查看日志,我可以看到:Encoding 参数中编码的特殊字符导致spring引导契约测试查询不匹配问题,encoding,spring-boot-test,Encoding,Spring Boot Test,在编写消费者端的spring引导契约测试时,当请求参数包含特殊字符时,我遇到了问题。他们会自动编码导致测试失败,因为Spring认为“查询不匹配” ”自动制动" 已编码为“%E8%87%AA%E5%8A%A8%E5%88%B6%E5%8A%A8” 查看日志,我可以看到: 查询:word=自动制动 | 单词:%E8%87%AA%E5%8A%A8%E5%88%B6%E5%8A%A8我也有类似的东西,并用这个修复了它: url value(consumer("/path1/path2/some
查询:word=自动制动 | 单词:%E8%87%AA%E5%8A%A8%E5%88%B6%E5%8A%A8我也有类似的东西,并用这个修复了它:
url value(consumer("/path1/path2/something%3Dsomethingelse"), producer("/path1/path2/something=somethingelse"))
同样的问题,你找到解决办法了吗?
@Test
public void testSynonyms_Cmn(){
RestTemplate restTemplate = new RestTemplate();
String url = "http://localhost:8080/synonyms";
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url)
.queryParam("filter","canonical")
.queryParam("lang","cmn-CHN")
.queryParam("word","自动制动");
HttpEntity<?> entity = new HttpEntity<>(httpHeaders);
CentralizedSynonyms centralizedSynonyms = restTemplate.exchange(builder.toUriString(), HttpMethod.GET, entity
, CentralizedSynonyms.class).getBody();
assertThat(centralizedSynonyms.getWord()).isEqualTo("自动制动");
assertThat(centralizedSynonyms.getCanonical()).isEqualTo("autohold");
}
url value(consumer("/path1/path2/something%3Dsomethingelse"), producer("/path1/path2/something=somethingelse"))