У меня есть конечная точка Spring REST с необязательными параметрами запроса, как показано ниже:
public ResponseEntity<Product> globalProduct(@RequestParam Optional<Integer> id, @RequestParam Optional<String> name){
return ResponseEntity.ok(tm));
}
, когда я пытаюсь протестировать эту конечную точку, которая использует платформу Mockito
@Test
public void testGlobalProduct() throws Exception {
URI uri = UriComponentsBuilder.fromPath("/api/products")
.queryParam("id", Optional.of(1)
.queryParam("name", Optional.empty())
.build().toUri();
mockMvc.perform( MockMvcRequestBuilders.get(uri)
.accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(content().contentType(MediaType.APPLICATION_JSON))
.andDo(MockMvcResultHandlers.print())
.andReturn();
}
Итак, queryParams Идентификатор и имя должны быть Optional.of (1) и Optional.empty (), но когда я отлаживаю в реализации остальных API, я вижу, id
и name
был обернут со значениями Optional[Optional[1]]
и Optiona[Optional.empty]]
.
Я знаю, что могу использовать @RequestParams (обязательно = false), но я не хочу использовать этот способ в этом контексте.
Как нам развернуть Optional[Optional[1]]
Optiona[Optional.empty]]
Это правильно? Любые предложения, пожалуйста?
Заранее спасибо!