상황
- AOP 이용하여 request 마다 log를 찍음
 
- POST 요청 시에 RequestBody로 들어오는 param 로그를 찍기위해, request에 접근해서 param을 받아옴
 
- 이때 request filter이용해서 한번 감싸준 request에서 param을 꺼내옴
 
- 잘 작동하던 코드인데, 갑자기 이번 프로젝트에서 IllegalStateException 뜨면서 컨트롤러로 아예 넘어오지 못하고 있다,,
- postman으로 테스트하면 괜찮음
 
- junit으로 테스트시에 예외 발생
 
 
과정
1. request 비교
JUnit test

- 210705 09:59:29 INFO c.b.a.c.u.CustomJsonUtils - Error reading JSON string: java.lang.IllegalStateException: Cannot call getReader() after getInputStream() has already been called for the current request 
 
Postman

- ReadableRequestWrapper로 잘 감싸져있음!!
 
2. Filter Chain 비교
- RequestFilter에서 wrapper로 감싸주는 코드가 있는데, filterRegisterBean에 등록해놨음에도 불구하고 Junit에서 테스트할 때, 그 필터가 적용되지 않는다.
 
JUnit

Postman

해결
MockMvc set up시 filter emdfhr
    @Before
    public void setUp() throws ServletException {
        mvc = MockMvcBuilders
                .webAppContextSetup(context)
                .addFilter(new RequestFilter()) 
                .apply(springSecurity())
                .build();
    }
참고