После введения нового HandlerInterceptor многие из моих предыдущих тестов внезапно начали давать сбой. Большинство этих тестов не были написаны с учетом перехватчиков, и теперь логика перехватчика выполняется почти для каждого запроса внутри тестов.
Я ищу руководство о том, как исправить или изолировать перехватчик для тестов и какой рекомендуемый подход:
- Следует ли отключать перехватчик в определенных тестах?
- Должен ли я издеваться над службой, от которой зависит перехватчик?
- Должен ли я обновлять каждый тест для учета перехватчика?
- Есть ли способ автоматически исключить его в настройках MockMvc/WebMvcTest?
Ниже приведен упрощенный пример конфигурации и перехватчика. (Имена изменены.)Код: Выделить всё
@Configuration @RequiredArgsConstructor public class DemoPathConfig implements WebMvcConfigurer { private final DemoAccessInterceptor demoAccessInterceptor; @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(demoAccessInterceptor) .addPathPatterns("/api/internal/**"); } }Как лучше всего справиться с внезапными сбоями тестов после добавления перехватчика?Код: Выделить всё
@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.
Подробнее здесь: https://stackoverflow.com/questions/798 ... ts-to-fail