웹 개발/Spring Framework
JUnit에서 세션 생성을 어떻게 해야할까?(JUnit에서 session 처리)
희랍인 조르바
2018. 5. 23. 14:14
스택오버플로 해당 url을 참고했다.
https://stackoverflow.com/questions/27102878/how-to-create-session-in-spring-junit
회사 프로젝트에서 로그인 정보(VO로 관리)는 session으로 관리하고 있다.
JUnit 테스트 중 DAO에서 세션정보를 바로 조회해서 쿼리를 날리는 부분이 있었다.
유닛 테스트를 돌리면서 세션을 만들어주고 주입하는 방법을 찾아야했다.
Mock을 활용하면 가능했다!
기쁨의 환호
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | private LoginVO loginVO; protected MockHttpSession session; protected MockHttpServletRequest request; @Before public void setUp() throws Exception{ loginVO = new LoginVO(); loginVO.setGroupNum( "test" ); loginVO.setCompNum( "chocolateCompany" ); loginVO.setEmpNum( "zorba" ); loginVO.setLanguage( "kr" ); session = new MockHttpSession(); session.setAttribute("loginVO", loginVO); request = new MockHttpServletRequest(); request.setSession(session); RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(request)); } @After public void clear(){ session.clearAttributes(); session = null; } @Test public void testSomeMethod(){ List<Integer> receiveList = testDAO.getChocolateSession(); /* DAO에서 세션을 받고 처리하는 로직인 메서드 */ assertTrue(receiveList != null); assertTrue(receiveList != 0); } | cs |
이 방법이면 세션이 형성되면서 테스트 속 실제 메서드에서 사용될 세션 값에 들어가게 된다.
MockHttpSession과 MockHttpServletRequest을 활용했다.
맵 형식으로 세션을 담을 수 있다.