MockHttpServletRequestBuilder - как изменить remoteAddress remoteHost HttpServletRequest? - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь создать фиктивный запрос на интеграционный тест (@SpringBootTest).

//given     
MockHttpServletRequestBuilder requestBuilder = get("/users/register/user1");

То, что я хочу проверить, является удаленным из этого запроса.В моем контроллере я получаю эту информацию из HttpServletRequest

HttpServletRequest request;
request.getRemoteHost();
request.getRemoteAddr();

К сожалению, сейчас getRemoteHost() всегда будет возвращать localhost .

Я бы хотел изменить его в моём запросе на что-то другое, например:

remoteHost: localhost -> mockhostdomain

remoteAddr: 127.0.0.1 --> 10.32.120.7 (что-то другое)

Я не могу найти подходящий метод для этого. Возможно ли это вообще?

1 Ответ

0 голосов
/ 10 декабря 2018

Я наконец нашел решение для этого здесь:

https://techotom.wordpress.com/2014/11/12/mocking-remoteaddr-with-spring-mvc/

В основном с помощью этого метода мы можем изменить каждый параметр запроса.

Итак, сначала мы должны определить наш метод, который изменяет то, что мы хотим в запросе:

private static RequestPostProcessor remoteHost(final String remoteHost){
    return request -> {
        request.setRemoteAddr(remoteHost);
        return request;
    };

И затем, с помощью метода with(...) на MockHttpServletRequestBuilder объекте, мы должны внедрить результат этого метода.

 MockHttpServletRequestBuilder requestBuilder = get("/user/prop").
         .with(remoteHost("mockhostdomain.com"));
...