테이블에서 자동으로 카운트하여 값을 +1 하여 저장하는 auto_increment
는 자동으로 설정하기 때문에 사용자가 임의로 값을 지정할 수 없다. 값을 지정하더라도 실제로는 다른 값으로 저장된다.
@DisplayName("구간 생성 시 상행역 또는 하행역 중 하나만 지하철 노선에 포함되어 있으면 등록 가능하다.")
@Test
void saveExistOneStation() {
// given
long station1Id = stationDao.save(new Station(1L, "강남역"));
long station2Id = stationDao.save(new Station(2L, "역삼역"));
long station3Id = stationDao.save(new Station(3L, "삼성역"));
sectionDao.save(1L, new Section(station1Id, station2Id, 10));
// when & then
assertThatCode(
() -> sectionService.save(1L, new SectionRequest(station1Id, station3Id, 10)))
.doesNotThrowAnyException();
}
위의 예시는 제대로 동작하는 코드이다. 지하철역(station)을 저장하면 저장된 데이터의 아이디값을 반환받는다. 지하철역 객체 생성 시 1L
로 아이디를 설정해두어 실제 아이디가 1L
일거라 생각하지만 실제로는 아니다. 테스트 작성 시 가독성을 위해 1L
로 테스트할 경우 에러가 발생한다.