Как издеваться над RequestContext.getCurrentContext ()? - PullRequest
1 голос
/ 28 марта 2019

Я новая пчела, застрявшая в одной проблеме с Зуулом. Я пишу тестовые случаи для фильтров Zuul. Сначала я хочу знать, нужно ли мне писать UT для моих фильтров Zuul, если да, тогда я пишу модульный тест метода shouldFilter () моего фильтра Zuul, в котором я должен смоделировать requestContext, как я могу достичь этой цели?

У меня уже есть ложный запрос HttpServelet и RequestContext, но когда я перехожу в режим отладки, он становится пустым ... что мне не хватает?

@ Override public boolean shouldFilter () {

    RequestContext requestContext = RequestContext.getCurrentContext();
    HttpServletRequest request = requestContext.getRequest();
    if (request.getHeader(Constants.AUTHORIZATION.getValue()) != null) {
        return true;
    }
    return false;
}

Это мой оригинальный метод

@Test
public void testShouldFilter(){

    MockHttpServletRequest request = new MockHttpServletRequest(context);
    request.addHeader("Authorization","123");
    RequestContext rc = new RequestContext();
    rc.setRequest(request);

    Mockito.when(requestContext.getCurrentContext().getRequest()).thenReturn(request);
    doReturn(request).when(requestContext).getRequest();
    doReturn(rc).when(requestContext)
    Mockito.when(request.getHeader()).thenReturn(rc);
    Mockito.when(RequestContextHolder.(Constants.AUTHORIZATION.getValue())).thenReturn(request.getHeader("Authorization"));
   boolean Sf = authorizationFilter.shouldFilter();
    Assert.assertFalse(Sf);
}

Это мой юнит тест

и извините за плохой английский

Я ожидаю, что запрос должен иметь любой фиктивный объект, чтобы он мог сравнивать значение заголовка, но с возвращаемым нулем.

1 Ответ

1 голос
/ 02 апреля 2019
RequestContext.testSetCurrentContext(new RequestContext());

или

MockHttpServletRequest request = new MockHttpServletRequest("GET", "/url");
RequestContext context = new RequestContext();
context.setRequest(request);
RequestContext.testSetCurrentContext(context);

Модульные тесты для фильтров не являются чем-то супер хорошим, но почему бы и нет, решать вам

...