@Test
public void 책목록보기_테스트() {
// given
// stub
List<Book> books = new ArrayList<>();
books.add(new Book(1L, "junit", "metacoding"));
books.add(new Book(2L, "bitflow", "dev"));
when(bookRepository.findAll()).thenReturn(books);
// when
List<BookRespDto> dtos = bookService.책목록보기();
// then
assertThat(dtos.get(0).getTitle()).isEqualTo("junit");
assertThat(dtos.get(0).getAuthor()).isEqualTo("metacoding");
assertThat(dtos.get(1).getTitle()).isEqualTo("bitflow");
assertThat(dtos.get(1).getTitle()).isEqualTo("dev");
}
위와같이 책 목록보기_테스트 메서드를 작성하고 테스트해보면 잘 안된다. 값을 보면 books의 아이디가 2l로만 나오는데 이것은 본 코드에 이상이 있다는 생각을 하게한다. 해서 본 코드에서 작성한 책목록보기를 다음과 같이 수정하였다.
// 2. 책 목록보기
public List<BookRespDto> 책목록보기() {
List<BookRespDto> dtos = bookRepository.findAll().stream()
.map((b) -> new BookRespDto().toDto(b))
.collect(Collectors.toList());
return dtos;
}
왜 안되는지 왜 이렇게 바꿧는지는 다음 강의 때 설명해준다고 하였다.