728x90
기본적인 CRUD의 로직 구현은 끝이 났다.
이제 각 단위들을 테스트해 볼 차례이다.
우선 이번 포스트에서는 Service 로직을 테스트해 보자!
PostServiceTest
@SpringBootTest
class PostServiceTest {
@Autowired
PostService postService;
@Autowired
PostRepository postRepository;
@BeforeEach
void clean() throws Exception {
postRepository.deleteAll();
}
- 우선 클래스 상단에 들어가는 기본적인 세팅이다.
- 테스트할 PostService와 그에 필요한 PostRepository를 주입받는다.
- @BeforeEach를 통하여 각 테스트를 시작하기 전 postRepository를 초기화 시켜준다.
@Test
@DisplayName("게시물_저장")
void create() {
CreatePostDto post = CreatePostDto.builder().title("제목1").content("내용1").build();
postService.create(post);
assertThat(postRepository.findAll().size()).isEqualTo(1);
assertThat(postRepository.findAll().get(0).getTitle()).isEqualTo("제목1");
assertThat(postRepository.findAll().get(0).getContent()).isEqualTo("내용1");
}
@Test
@DisplayName("게시물_단건_조회")
void findOne() {
Post post = Post.builder().title("제목1").content("내용1").build();
Post savedPost = postRepository.save(post);
PostResponse findPost = postService.findOne(savedPost.getId());
assertThat(findPost.getTitle()).isEqualTo("제목1");
assertThat(findPost.getContent()).isEqualTo("내용1");
}
@Test
@DisplayName("게시물_전체_조회")
void findAll() {
//given
Post post1 = Post.builder().title("제목1").content("내용1").build();
postRepository.save(post1);
Post post2 = Post.builder().title("제목2").content("내용2").build();
postRepository.save(post2);
//when
PostListResponse findAll = postService.findAll();
//then
assertThat(findAll.getPostList().size()).isEqualTo(2);
assertThat(findAll.getPostList().get(0).getTitle()).isEqualTo("제목1");
assertThat(findAll.getPostList().get(0).getContent()).isEqualTo("내용1");
assertThat(findAll.getPostList().get(1).getTitle()).isEqualTo("제목2");
assertThat(findAll.getPostList().get(1).getContent()).isEqualTo("내용2");
}
@Test
@DisplayName("게시물_수정")
void update() {
//given
Post post = Post.builder().title("제목1").content("내용1").build();
Post savedPost = postRepository.save(post);
UpdatePostDto updatePostDto = UpdatePostDto.builder().title("제목바꿈").content("내용바꿈").build();
//when
postService.update(savedPost.getId(), updatePostDto);
Post findPost = postRepository.findById(savedPost.getId()).get();
//then
assertThat(findPost.getTitle()).isEqualTo("제목바꿈");
assertThat(findPost.getContent()).isEqualTo("내용바꿈");
}
@Test
@DisplayName("게시물_삭제")
void delete() {
Post post = Post.builder().title("제목1").content("내용1").build();
Post savedPost = postRepository.save(post);
postService.delete(savedPost.getId());
List<Post> posts = postRepository.findAll();
assertThat(posts.size()).isEqualTo(0);
}
전체 코드는 이렇다.
거의 비슷한 흐름으로 흘러간다.
Post를 우선 생성해 주고, Service에서 구현한 각 기능들을 상황에 맞게 넣어 테스트해 준다!
'프로젝트 > RestApi_CRUD' 카테고리의 다른 글
RestApi 게시판 CRUD 연습 (5) - PostMan (0) | 2023.03.16 |
---|---|
RestApi 게시판 CRUD 연습 (4) - 유닛 테스트 : Controller 테스트 with MockMvc (0) | 2023.03.16 |
RestApi 게시판 CRUD 연습 (2) - Service / Controller (0) | 2023.03.14 |
RestApi 게시판 CRUD 연습 (1) - 연습 이유 / 프로젝트 세팅 / Entity,DTO,Repository (0) | 2023.03.14 |