728x90

- 기존에 작성했던 Service코드와 비슷하다.
- 사실상 Repository에 기능을 위임만 하기 때문에 Service가 필요 없음
- 바로, Repository에 접근하여 해당 기능을 사용해도 된다.
- saveItem 메서드
- 저장 기능
- findItems 메서드
- 모든 Item 조회
- findOne 메서드
- 하나의 Item 조회
Test
강의의 내용이 너무 짧아 혼자 테스트 케이스를 작성해 보았다.
@SpringBootTest
@Transactional
class ItemServiceTest {
@Autowired
ItemService itemService;
@Autowired
ItemRepository itemRepository;
@Test
@Rollback(value = false)
public void 아이템_저장() throws Exception{
//given
Item book = new Book();
//when
itemService.saveItem(book);
//then
assertEquals(book,itemRepository.findOne(book.getId()));
}
@Test
@Rollback(value = false)
public void 아이템_저장_업데이트() throws Exception{
//given
Item book = new Book();
//when
itemService.saveItem(book);
book.addStock(200);
itemService.saveItem(book);
//then
assertEquals(book,itemRepository.findOne(book.getId()));
assertEquals(book.getStockQuantity(),itemRepository.findOne(book.getId()).getStockQuantity());
}
@Test
public void 에러_발생() throws Exception{
//given
Item item = new Book();
item.addStock(5000);
//when
//then
assertThrows(NotEnoughStockException.class,() ->item.removeStock(6000));//에러 발생
}
}
- TDD 연습
- 아이템_저장 메서드
- 실제 Save시 Insert가 되는지 테스트
- Rollback을 false로 설정하여 실제 Insert 쿼리가 잘 실행되는지 확인해 보았다.
- 아이템_저장_업데이트 메서드
- merge가 잘 동작되는지를 확인하기 위한 테스트
- Book을 생성하여 영속화를 한 뒤, 해당 데이터를 가지고 다시 실행하게 된다면 기존에 영속화가 되어있던 데이터로 id값이 있어 merge를 타게 된다.
- update문이 잘 실행된다.
- 에러_발생 메서드
- 처음 재고 값을 5000으로 세팅한 뒤, removeStock 비즈니스 메서드를 실행시켜 에러가 잘 동작하는지 확인한다.
728x90
'실전! 스프링 부트와 JPA 활용1(웹 애플리케이션 개발)' 카테고리의 다른 글
| Ch06. 상품 도메인 개발 - 주문 Repository 개발, 주문 Service 개발 (0) | 2021.12.06 |
|---|---|
| Ch06. 주문 도메인 개발 - 주문, 주문상품 엔티티 개발 (0) | 2021.12.06 |
| Ch05. 상품 도메인 개발 - 상품 Repository 개발 (0) | 2021.12.05 |
| Ch05. 상품 도메인 개발 - 상품 엔티티 개발(비즈니스 로직 추가) (0) | 2021.12.05 |
| Ch04. 회원 도메인 개발 - 회원 기능 테스트 (0) | 2021.12.05 |