Перепроверенный запрос HttpServletRequest не возвращает ожидаемое значение метода - PullRequest
0 голосов
/ 08 июля 2019

У меня есть фильтр в Spring, который выполняет некоторую логику в зависимости от типа метода входящего запроса.Ниже приведен код фильтра:

public class TestFilter extends GenericFilterBean {

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest httpRequest = (HttpServletRequest) request;
        HttpServletResponse httpResponse = (HttpServletResponse) response;
        if (HttpMethod.GET.equals(httpRequest.getMethod())) {
            // do something
        } else {
            // do something else
        }
        chain.doFilter(request, httpResponse);
    }
}

. В приведенном выше коде я пытаюсь установить заголовок в моем ответе под названием GETHEADER всякий раз, когда метод запроса равен GET, тогда как этого не происходит в POST.

И я пытаюсь протестировать его, используя приведенный ниже код теста:

@Mock
HttpServletResponse response;

@Mock
HttpServletRequest request;

@Mock
FilterChain chain;

@Autowired
TestFilter testFilter;

@Test
public void testGetRequest() throws Exception {
    when(request.getMethod()).thenReturn(HttpMethod.GET.toString());
    testFilter.doFilter(request, response, chain);
    Assert.assertNotNull(response.getHeader("GETHEADER"));
}

В своем покрытии кода я вижу только выполнение остальной части, но не части if,Разве это не возвращает значение, которое я пытаюсь предоставить, или есть какая-то проблема с тем, как я возвращаю?

ОБНОВЛЕНИЕ : пробовал, как показано ниже:

код: if (HttpMethod.GET.toString().equals(httpRequest.getMethod()))

контрольный пример: when(request.getMethod()).thenReturn(HttpMethod.GET.toString())

также

код: if ("GET".toString().equals(httpRequest.getMethod()))

контрольный пример: when(request.getMethod()).thenReturn("GET")

1 Ответ

1 голос
/ 08 июля 2019

Значение enum никогда не равно String. HttpMethod.GET является значением перечисления. httpRequest.getMethod() - это строка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...