JMockit mocked класс возвращает ноль для дочернего метода - PullRequest
0 голосов
/ 13 декабря 2018

Я хочу протестировать фильтр, который реализует ContainerRequestFilter из JAX-RS.

Класс реализации:

public class CookieRequestFilter implements ContainerRequestFilter {

public static final String EXCLUDE_FROM_FILTER = ".*healthy$|.*alive$";

@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
    URI uri = requestContext.getUriInfo().getAbsolutePath();
    if (uri.getPath().matches(EXCLUDE_FROM_FILTER)) {
        return;
    }
    Cookie cookie = requestContext.getCookies().get("cookie_identifier");
    // some other code here
}
}

Модульные тесты выполняются с использованием инфраструктуры JMockit.Тест:

@RunWith(JMockit.class)
public class CookieRequestFilterTest {

@Tested
private CookieRequestFilter cookieRequestFilter;

@Test
public void filterCookie(@Mocked ContainerRequestContext request) throws IOException {
    Map<String, Cookie> cookies = new HashMap<>();
    String identifier = "1";
    cookies.put("cookie_identifier", getCookie(identifier));
    new Expectations() {{
        request.getCookies();
        times = 1;
        result = cookies;
    }};

    cookieRequestFilter.filter(request);
}

private NewCookie getCookie(String value) {
    return new NewCookie("cookie_identifier",
                         value,
                         "/",
                         "",
                         1,
                         null,
                         840,
                         new Date(new Date().getTime() + 840 * 1000),
                         true,
                         false);
}
}

Это дает мне NPE на

uri.getPath (). Match (EXCLUDE_FROM_FILTER)

Может кто-нибудь помочьмне с этим?

...