У меня проблема при тестировании запроса на отдых.Однако тест перехватывается одним из моих перехватчиков.
Короче говоря, я хочу макетировать поведение перехватчиков, а не вызывать фактическую реализацию.
Для простоты, чтобы визуализировать проблему здесь просто запрос Get
@Controller
public class HiController {
@ResponseBody
@GetMapping(value = "/hi", produces = {"application/json"})
public String hi() {
return "hi";
}
}
с простым перехватчиком и файлом конфигурации
@Component
public class LoggingInterceptor implements HandlerInterceptor {
@Override
public final boolean preHandle(HttpServletRequest request, final HttpServletResponse response, final Object handler) {
System.out.println("Logging token interceptor");
return true;
}
}
@Component
public class InterceptorAppConfig implements WebMvcConfigurer {
@Autowired
private LoggingInterceptor loggingTokenInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(loggingTokenInterceptor);
}
}
целью теста было вызватьконечная точка покоя и макет перехватчика
@RunWith(SpringRunner.class)
@WebMvcTest(HiController.class)
public class HiControllerTest extends MvcTest {
@Autowired
private MockMvc mockMvc;
@MockBean
RestTemplate restTemplate;
@Mock
private HiController controller;
private static final String AUTHENTICATE_USER = "/hi";
@Test
public void mandatoryFieldMissing() throws Exception {
this.mockMvc.perform(get(AUTHENTICATE_USER))
.andExpect(content().string(containsString("hi")))
.andExpect(status().isOk());
}
}
@RunWith(SpringRunner.class)
public abstract class MvcTest {
@MockBean
LoggingInterceptor loggingTokenInterceptor;
}
Когда я запускаю этот тест, ^ LoggingInterceptor
все еще вызывается.
Как настроить тесты на использование имитирующих перехватчиков?