java - @Valid Annotations 在测试 Spring Boot 服务时无法从 Junit 5 和 mockito 工作
问题描述
我很难使用 Jnit 5 设置正确的验证注释以从 Spring Boot 服务进行测试
服务接口
@Validated
public interface UsersQueryService {
Users getById(@ValidIdentifier Long id);
}
单元测试
@Test
void getById_invalid_id() {
assertThrows(UsersException.class, () -> {
Long invalid_id = 0l;
usersService.getById(invalid_id);
});
}
我试图通读很多帖子,但所有帖子都涵盖了实现并且与我的用例不匹配。在一篇博客中,我找到了以下代码来注册方法验证后处理器,但这也不起作用。请提出正确的方法来让它工作
@TestConfiguration
static class MethodValidationConfig {
@Bean
public MethodValidationPostProcessor bean() {
return new MethodValidationPostProcessor();
}
}
注意:我只做服务测试,因此不验证请求流
@ExtendWith(SpringExtension.class)
@ContextConfiguration(initializers = ConfigFileApplicationContextInitializer.class)
class UsersQueryServiceTests
解决方案
推荐阅读
- firebase - 使用 Firebase 进行 Flutter RealTime Online 和 Offline
- java - 排除来自依赖项的 jar
- router - 路由器的输出缓冲区大小取决于 RTT。如何?
- javascript - touchstart 事件在移动设备上不起作用 - JavaScript
- asp.net-core - OAuth 2.0 与内省 .net core 3.1
- javascript - 使用 Oauth2 登录 Google:错误 400:redirect_uri_mismatch
- javascript - 反应中的异步功能不会对状态变化做出反应
- perl - 无法在 @INC 中找到 DBD/ODBC.pm(@INC 包含:/usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor. )
- python - 如何使这些连续的日期成为每周一次?在蟒蛇
- python - 如何在 C 中读取 .sav 文件?