오늘 한일

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단계 피드백 반영
  • 구공팩토리 방문상담