Table of contents
오늘 한일
ATDD: Q&A 2단계 구현
- 질문 CRUD 기능을 구현한다.
- 모든 사용자는 질문을 볼 수 있다.
- 로그인한 사용자에 대해서만 질문이 가능하다.
- 자신이 작성한 질문에 대해서만 수정/삭제가 가능하다.
위의 요구사항을 ATDD 기반으로 구현했다.
- Acceptance Test 작성
- 컨트롤러 구현
- 서비스 테스트 작성
- 이 부분에서 Repository에 대해 @Mock, @InjectMock을 사용했다.
- 통과
- 서비스 구현
- 도메인 테스트 작성
- 도메인 구현
- 통과
- Acceptance Test 통과
한가지 예로 질문 생성 기능을 다음과 같은 순서로 진행했다.
- 비로그인 사용자, 질문 생성
- Acceptance Test 작성: 401 Unauthorized 응답 테스트
- 컨트롤러 @PostMapping create(...) 구현
- 비로그인인 경우 401 응답
- 비로그인 사용자, 질문 생성에 대한 Acceptance Test 통과
- 로그인 사용자, 질문 생성
- 질문 생성이 완료된 경우, Home 화면으로 redirect (302 Found)
- Acceptance Test 작성: 302 Found 응답 테스트
- 서비스 테스트 작성
- when(repository.save(....)).thenReturn(...) mocking
- when(repository.findById(....)).thenReturn(...) mocking
- 서비스 테스트 통과
- 서비스 구현
- JpaRepository 주입
- 도메인 테스트 작성
- create, update, delete 등에 대한 테스트
- 도메인 구현
- 도메인 테스트 통과
- 로그인 사용자, 질문 생성에 대한 Acceptance Test 통과
오늘 느낀점
테스트 작성이 익숙하지 않아서 2단계를 구현하는데 오랜 시간이 걸렸다. 현업에서도 모든 구간에 대한 테스트를 작성하는 건가 싶다.
내일 할일
- Q&A 2단계 피드백 반영
- 구공팩토리 방문상담