회원가입, 로그인, 로그아웃, 토큰 재발급, 메일 인증에 대한 테스트 코드를 작성하였습니다.
Description
통합 테스트를 위해 별도의 profiles을 만들었습니다. 또한, 개발에 사용중이던 더미 데이터 data.sql과 분리된 테스트용 더미 데이터 teardown.sql을 만들었습니다.
teardown.sql
동일하게 지역 데이터를 전부 넣기에는 리소스 낭비일 것 같아서 서울과 부산의 정보만을 넣었습니다.
data.sql을 적용하지 않고 teardown.sql을 적용하기 위해 별도의 application-test.yml을 만들어 적용해야했습니다.
yml 설정으로 data.sql 적용을 취소하고, Test Class에 Sql annotation으로 teardown.sql을 적용합니다.
생각보다 잘 동작하지 않아 설정하는 데 시간이 오래 걸려 PR이 늦었습니다.
테스트용 더미 데이터의 경우 그냥 만들기에는 데이터들 간의 연관관계를 생각해야 하여, api를 통해 db에 데이터를 집어 넣고 db 데이터를 가져오는 방식으로 만들어야 할 거 같습니다. 일단은 최소한의 데이터만 직접 작성해놨습니다.
CustomUserDetailsService
WithUsersDetails로 간편하게 인증을 뚫기 위해 작성하였습니다.
우리 서비스는 userName이 unique하기 때문에, 이름으로 가져오도록 하였습니다.
test에서만 사용될 것이기 때문에 user 이름이 변경되거나 그런 상황까지의 고려는 하지 않았습니다.
MockBean
테스트를 하며 별개의 프로그램과 상호작용을 하는 게 싫어 redis의 경우 MockBean으로 하였습니다.
javaMailSender도 mocking하여 메일 발송 테스트를 작성하려하였지만, 컴파일 에러가 나와서 그냥 작성하였습니다. 하지만 테스트를 실행할때마다 메일이 발송되고, 심지어 속도도 느리기 때문에 그냥 주석 처리해두었습니다.
그 외, 테스트 코드를 작성하며 발견한 자잘한 수정사항을 추가적으로 수정하였습니다.
코드가 길어져서 현재까지의 작업사항 PR 보냅니다.
teardown.sql 때문에 줄 수가 늘어났는데, UserControllerTest 위주로 확인해주시면 됩니다.
Summary
회원가입, 로그인, 로그아웃, 토큰 재발급, 메일 인증에 대한 테스트 코드를 작성하였습니다.
Description
통합 테스트를 위해 별도의 profiles을 만들었습니다. 또한, 개발에 사용중이던 더미 데이터 data.sql과 분리된 테스트용 더미 데이터 teardown.sql을 만들었습니다.
teardown.sql
동일하게 지역 데이터를 전부 넣기에는 리소스 낭비일 것 같아서 서울과 부산의 정보만을 넣었습니다.
data.sql을 적용하지 않고 teardown.sql을 적용하기 위해 별도의 application-test.yml을 만들어 적용해야했습니다. yml 설정으로 data.sql 적용을 취소하고, Test Class에 Sql annotation으로 teardown.sql을 적용합니다.
생각보다 잘 동작하지 않아 설정하는 데 시간이 오래 걸려 PR이 늦었습니다.
테스트용 더미 데이터의 경우 그냥 만들기에는 데이터들 간의 연관관계를 생각해야 하여, api를 통해 db에 데이터를 집어 넣고 db 데이터를 가져오는 방식으로 만들어야 할 거 같습니다. 일단은 최소한의 데이터만 직접 작성해놨습니다.
CustomUserDetailsService
WithUsersDetails로 간편하게 인증을 뚫기 위해 작성하였습니다.
우리 서비스는 userName이 unique하기 때문에, 이름으로 가져오도록 하였습니다.
test에서만 사용될 것이기 때문에 user 이름이 변경되거나 그런 상황까지의 고려는 하지 않았습니다.
MockBean
테스트를 하며 별개의 프로그램과 상호작용을 하는 게 싫어 redis의 경우 MockBean으로 하였습니다.
javaMailSender도 mocking하여 메일 발송 테스트를 작성하려하였지만, 컴파일 에러가 나와서 그냥 작성하였습니다. 하지만 테스트를 실행할때마다 메일이 발송되고, 심지어 속도도 느리기 때문에 그냥 주석 처리해두었습니다.
그 외, 테스트 코드를 작성하며 발견한 자잘한 수정사항을 추가적으로 수정하였습니다.
코드가 길어져서 현재까지의 작업사항 PR 보냅니다.
teardown.sql 때문에 줄 수가 늘어났는데, UserControllerTest 위주로 확인해주시면 됩니다.
자세한 사항은 각 커밋 별 description을 확인부탁드립니다
Related Issue
Issue Number: #63