배우는 점이 많다. 역시 모든건 머리를 박아보면서 배우는게 가장 빨리, 많이 배우는것 같다.
인간은 망각의 동물 + 원래 잘까먹는 특성을 합해 문제가 생겨 머리를 박아가면서 1시간에서 몇일 걸려 해결을 해도 정리를 안하면 까먹는다.(벌써 한 3개는 까먹은듯) 그래서 정리를 하기로 했다
RepositoryTest 를 할 때는 굳이 모든것을 다 띄울 필요가 없다.(Service, Controller도 Mock으로 해결)
따라서 컨테이너에 JPA에 필요한 설정만 등록하여 사용한다. -> 더 빠른 속도로 테스트가 가능하다
Post, Like, User 테이블을 두고서 기능 개발 도중, Like 테이블에서 개수를 조회해서 리턴을 해주는 과정에 테스트에 오류가 생겼다.
JPA는 사용하면 영속성 컨텍스트 를 사용한다.
DataJpaTest 를 사용하면 위 영속성 컨텍스트에서 DB로 데이터를 넘기지 않고 테스트를 끝낸다.
(어차피 Rollback을 하기 때문에)
따라서 entityManger.flush()를 호출해 주면 해결할 수 있다.
혹은 GenerationType을 IDENTITY로 해두면 ID를 받아오기 위해 데이터를 insertQuery를 실행하게 되고 따라서 문제가 해결된다.