티스토리 뷰
게시판에 글을 등록 또는 수정할 때 글을 insert/update 한 후 redirect 시키는데
redirect 시키는 url이 (생성 또는 수정된) 게시글 코드를 파라미터로 포함하고 있었다.
그런데 JUNIT 테스트 코드를 작성하려니 update는 게시글 코드를 내가 미리 알 수 있지만
insert하는 경우는 insert한 후 받아오는 값이라서 테스트 할 때마다 변하고 내가 알 수 있는 방법이 없었다.
이러한 경우에 대한 해결 방법을 서칭한 결과 redirectedUrl을 사용하지 않고 정규식 표현을 이용하여 패턴에 맞는지 확인하는 방법을 사용하는 방법을 발견했다.
참고 사이트
https://stackoverflow.com/questions/17834034/spring-mockmvc-redirectedurl-with-pattern
여기서 나오는 redirectedUrlPattern 메소드를 MockMvc.class에 추가할 수 없으니 테스트와 관련된 적절한 곳에 만들어주었다.
public static ResultMatcher redirectedUrlPattern(final String expectedUrlPattern){
return new ResultMatcher() {
public void match(MvcResult result){
Pattern pattern = Pattern.compile(expectedUrlPattern);
Matcher matcher = pattern.matcher(result.getResponse().getRedirectedUrl());
assertTrue(matcher.find());
}
};
}
expectedUrlPattern에 정규식 표현을 넣어서 호출해 주면 된다.
특수문자는 앞에 \\를 붙여주어야 한다. ex) \\? \\&
정규식 표현이 맞지 않아 에러가 나는 경우가 많았다 ㅠㅠ
테스트하면서 맞는 표현을 찾는 데에 아래 사이트가 도움이 되었다.
정규식 테스트 사이트 :
https://programmers.co.kr/learn/courses/11/lessons/538
패턴매칭 참고 사이트 :
http://dreamzelkova.tistory.com/entry/JAVA-%ED%8C%A8%ED%84%B4-%EB%A7%A4%EC%B9%ADPattern-Matching