본문 바로가기
개발/Junit

⑥Service Junit 테스트 - 4 검색 수정 junit테스트

by 외노자개발 2022. 10. 20.
반응형

 

1. book 검색 테스트

	@Test
	public void bookSearchTest() {
		//given
		Long id = 1L;
		
		//stub
		Book book = new Book(1L, "junit-1", "coding-1");
		Optional<Book> bookOP = Optional.of(book);
		when(bookRepository.findById(id)).thenReturn(bookOP);
		
		//when
		BookRespDto bookRespDto = bookService.booksSearch(id);
		
		//then
		assertThat(bookRespDto.getTitle()).isEqualTo(book.getTitle());
		assertThat(bookRespDto.getAuthor()).isEqualTo(book.getAuthor());
	}

given// 검색에 필요한 1L을 등록

stub// Book객체를 만든다 그 후 , Oprional로 bookOP를 만들어서 방금 생성한  book을 넣는다. 

참고로, Optional.of()란 value에 null값이 없는 경우 저장 할 수 있다. 

when을 이용해서 bookRepository.findById(id)를 반환할 때 thenReturn으로 bookOP로 반환해준다. 

when// bookService.bookSearch(id);를 실행해서 1L을 검색 bookRespDto에 넣는다.

then// aseertThat(bookRespDto.getTitle)과 생성한 book과 비교를 해준다. 


2. book 수정 테스트

	@Test
	public void bookCollectionTest() {
		//given
		Long id = 1L;
		BookSaveReqDto dto = new BookSaveReqDto();
		dto.setTitle("junit-seo");
		dto.setAuthor("coding-seo");
		
		//stub
		Book book = new Book(1L, "junit-1", "coding-1");
		Optional<Book> bookOP = Optional.of(book);
		when(bookRepository.findById(id)).thenReturn(bookOP);
	
		//when
		BookRespDto bookRespDto = bookService.bookCollection(id, dto);
		
		//then
		assertThat(bookRespDto.getTitle()).isEqualTo(dto.getTitle());
		assertThat(bookRespDto.getAuthor()).isEqualTo(dto.getAuthor());
		
	}

수정을 하기위해서 given에서 수정할 데이터를 입력한다. 

given// BookSaveReqDto에는 id변수가 없기 때문에 따로 만들어 주고, dto변수에 setTitle과 setAuthor을 입력해준다.

stub// 기존에 db에 있을 book객체를 만든다. 그리고 bookOP로 값을 넣어주고 반환해준다. 

when// bookRespDto에 dto에서 만든 "junit-seo"과"coding-seo"를 반환해준다.

then// assertThat으로 비교해준다. 

 

 

이상!! Service는 완료했습니다. 다음은 Controller를 공부해 가도록 하겠습니다.

반응형

댓글