given-when-then패턴 테스트코드 구현하기
테스트 주도 개발

Red 단계에서는 실패하는 테스트 코드를 먼저 작성한다.
Green 단계에서는 테스트 코드를 성공시키기 위한 실제 코드를 작성한다.
Blue 단계에서는 중복 코드 제거, 일반화 등의 리팩토링을 수행한다.
bom (Bill of Meterials): 의존성 버전 관리
dependencies {
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

Given
주어진 전체 조건을 정의하고 테스트 실행을 위한 준비 "어떤 배경이나 상태가 주어졌을 때"
When
테스트하려는 메서드나 기능을 실행하는 과정
"어떤 행동을 실행하면"
Then
메소드나 기능이 실행된 후 예상되는 결과가 나오는지 확인
"예상한 결과가 맞는지 확인한다."
검증(Assertion): Expected, Actual 을 비교
테스트를 하기 위한 코드 이외의 의존 객체들이 존재하는 경우 사용
📌 Repository -> Service -> Controller 순서로 테스트 코드 작성
🍯 Generate → Test 으로 자동 생성할 수 있다.
@DataJpaTest
@ExtendWith(MockitoExtension.class)
테스트 대상 외는 @Mock
테스트 대상은 @InjectMocks
@Mock은 given 단계에서 Mocking 한다.
id는 entity가 save되면서 자동 증가 → 값이 없어서 테스트 시 직접 세팅 필요
@WebMvcTest(*Controller.class)
😎 예시코드 직접 작성해보기!