@RunWith(SpringRunner.class)
public class BookServiceTest {
/*
BookService 객체는 BookRepository 객체를 생성자에서 의존성 주입받아 사용하므로,
BookRepositry가 구현되어있지 않으면, BookService객체에 대한 단위 테스트를 할 수 없다.
따라서, BookRepositry의 Mock(가짜)객체를 만들어, 해당 가짜 객체의 작동을 미리 정의해 준다.
그러면, BookService에서 이 가짜객체를 주입받아 테스트를 할 수 있다.
*/
@Mock
BookRepository bookRepository;
@Test
public void save(){
// 새로운 Book 객체를 만든다.
Book book = new Book();
// bookRepository 의 save함수를 book객체를 매개변수로 하여 호출하면,
// book 객체를 반환하라는 것을 미리 정의해준다.
when(bookRepository.save(book)).thenReturn(book);
// 이렇게 위에서 정의된 bookRepository 객체를 BookService의 생성자 매개변수로 주입하여
// 새로운 BookService 객체를 만든다.
BookService bookService = new BookService(bookRepository);
// bookService의 save함수를 book객체를 매개변수로 넘기면서 호출하여,
// 반환값이 위에서 정의한대로 book객체가 그대로 나오는지 확인한다.
Book result = bookService.save(book);
assertThat(result).isNotNull();
}
}
JUnit/JUnit4
댓글