У меня есть большое приложение Spring Boot с обширным набором тестов (модульные тесты + тесты контроллера).
После введения нового HandlerInterceptor многие из моих предыдущих тестов внезапно начали давать сбой. Большинство этих тестов не были написаны с учетом перехватчиков, и теперь логика перехватчика выполняется почти для каждого запроса внутри тестов.
Я ищу руководство о том, как исправить или изолировать перехватчик для тестов и какой рекомендуемый подход:
Следует ли отключать перехватчик в определенных тестах?
Должен ли я издеваться над службой, от которой зависит перехватчик?
Должен ли я обновлять каждый тест для учета перехватчика?
Есть ли способ автоматически исключить его в настройках MockMvc/WebMvcTest?
Ниже приведен упрощенный пример конфигурации и перехватчика. (Имена изменены.)
@Component
@RequiredArgsConstructor
@Slf4j
public class DemoAccessInterceptor implements HandlerInterceptor {
private final DemoCheckService demoCheckService;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
if (HttpMethod.OPTIONS.matches(request.getMethod())) {
return true;
}
demoCheckService.validateAccess();
return true;
}
}
Как лучше всего справиться с внезапными сбоями тестов после добавления перехватчика?
Меня особенно интересуют стратегии, используемые в больших базах кода, такие как глобальное отключение перехватчиков для тестов, условная регистрация или трюки с настройкой MockMvc/WebMvcTest.
У меня есть большое приложение Spring Boot с обширным набором тестов (модульные тесты + тесты контроллера). После введения нового HandlerInterceptor многие из моих предыдущих тестов внезапно начали давать сбой. Большинство этих тестов не были написаны с учетом перехватчиков, и теперь логика перехватчика выполняется почти для каждого запроса внутри тестов. Я ищу руководство о том, [b]как исправить или изолировать перехватчик для тестов[/b] и какой рекомендуемый подход: [list] [*]Следует ли отключать перехватчик в определенных тестах?
[*]Должен ли я издеваться над службой, от которой зависит перехватчик?
[*]Должен ли я обновлять каждый тест для учета перехватчика?
[*]Есть ли способ автоматически исключить его в настройках MockMvc/WebMvcTest? Ниже приведен упрощенный пример конфигурации и перехватчика. (Имена изменены.) [code]@Configuration @RequiredArgsConstructor public class DemoPathConfig implements WebMvcConfigurer {
private final DemoAccessInterceptor demoAccessInterceptor;
@Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(demoAccessInterceptor) .addPathPatterns("/api/internal/**"); } }
[/code] [code]@Component @RequiredArgsConstructor @Slf4j public class DemoAccessInterceptor implements HandlerInterceptor {
private final DemoCheckService demoCheckService;
@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { if (HttpMethod.OPTIONS.matches(request.getMethod())) { return true; }
[/code] [b]Как лучше всего справиться с внезапными сбоями тестов после добавления перехватчика?[/b] Меня особенно интересуют стратегии, используемые в больших базах кода, такие как глобальное отключение перехватчиков для тестов, условная регистрация или трюки с настройкой MockMvc/WebMvcTest.