gpt4 book ai didi

java - MockMvc 无法使用参数 @DateValid 进行验证

转载 作者:行者123 更新时间:2023-12-05 06:27:25 26 4
gpt4 key购买 nike

我正在使用 MockMvc 来测试我的具有日期参数的方法。该参数使用 @DateValid 注释,但 MockMvc 不会触发 validator 并在我输入错误日期时返回成功。

学生 Controller

public ResponseEntity<?> getStudents(@PathVariable("id") String studentId,
@RequestParam("birthDate") @DateValid String Date) {
//do something
}

测试

public class StudentController extends AbstractControllerTest {
@Test
public void testStudents_validRequest() throws Exception {
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
params.add("birthDate","aaaa");

MvcResult result = getMvc().perform(get("/student/{studentId}", "test")
.params(params)
.characterEncoding(StandardCharsets.UTF_8.name())
.contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(content().json(mapToJson(studentResDto)))
.andReturn();

verify(studentService).getStudentId(anyString(), anyString());
log(log, result);
}

}

我不明白为什么,因为当我使用 Postman 进行测试时,它按预期工作。 Postman 会验证但 MockMvc 不会?我使用 Spring-Boot 2.1.3

最佳答案

我在这里可以想到两个问题:

  1. 验证注释类未在您的测试中正确加载。这似乎主要发生在将 Spring 验证与 Hibernate 验证结合使用时(另请参阅 this question 了解如何解决该问题。

  2. 您的测试设置不正确。可能是您在模拟测试中没有完全加载 Controller 吗?也许您不小心在 mock Controller ?

关于java - MockMvc 无法使用参数 @DateValid 进行验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55332056/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com