IllegalStateException - Request에서 param꺼내기

갓김치·2021년 6월 29일
0

예외

목록 보기
15/28
post-thumbnail

상황

  • 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();
    }

참고

profile
갈 길이 멀다

0개의 댓글