[꼼꼼한 개발자] 꼼코더
32. 코드로 배우는 스프링 웹 프로젝트 - [비즈니스 계층] - 비즈니스 계층의 구현과 테스트(등록, 조회 , 삭제 / 수정) 본문
32. 코드로 배우는 스프링 웹 프로젝트 - [비즈니스 계층] - 비즈니스 계층의 구현과 테스트(등록, 조회 , 삭제 / 수정)
꼼코더 2023. 1. 9. 23:35👷🏻♂️ 비즈니스 계층의 구현과 테스트(테스트 코드 작성)
BoardMapper와 BoardService, BoardMapperServiceImpl에 대한 구조 설정이 완료되었으므로
테스트 클래스를 작성해 본다.
👨🏻💻 BoardServiceTests 작성
src/test/java → org.zerock.service → BoardServiceTests 클래스 작성
💁🏻♂️ 결과
BoardServiceTests의 첫 테스트는 BoardService 객체가 제대로 주입이 가능한지 확인하는 작업
정상적으로 BoardService 객체 생성 후 BoardMapper가 주입되었다면
아래와 같이 BoardServiceService 객체와 데이터 베이스 관련 로그가 같이 출력된다.
👨🏻💻 등록 작업의 구현과 테스트
등록 작업은 BoardServiceImple에서 파라미터로 전달되는 > BoardVO 타입의 객체를 > BoardMapper를 통해서 > 처리한다.
구현코드는 아래와 같다.
👨🏻💻 BoardServiceImpl 작성
BoardService는 void 타입으로 설계되었으므로 mapper.insertSelectKey()의 반환 값인 int를 사용하고 있지 않지만 필요시 예외처리나 void 대신 int타입을 이용해서 사용할 수 있다.
mapper.insertSelectKey()를 이용해서 나중에 생성된 게시물의 번호를 확인할 수 있게 작성.
👨🏻💻 BoardServiceTests 작성
💁🏻♂️ 결과
생성된 게시물의 번호를 확인할 수 있다.
👷🏻♂️ 목록(리스트) 작업의 구현과 테스트
👨🏻💻 BoardServiceImpl 작성
현재 테이블에 저장된 모든 데이터를 가져오는 getList()는’ 아래처럼 구현한다.
👨🏻💻 BoardServiceTests 작성
💁🏻♂️ 결과
추가된 데이터가 정상적으로 나오는지 확인
👷🏻♂️ 조회 작업의 구현과 테스트
조회는 게시물의 번호가 파라미터이고 BoardVO의 인스턴스가 리턴이 된다.
👨🏻💻 BoardServiceImpl 작성
👨🏻💻 BoardServiceTests 작성
💁🏻♂️ 결과
👷🏻♂️ 삭제 / 수정 구현과 테스트
삭제 / 수정은 메서드의 리턴 타입을 void로 설계 가능하나
엄격하게 처리하기 위해 Boolean 타입으로 처리한다.
👨🏻💻 BoardServiceImpl 작성
정상적으로 수정, 삭제가 이루어지면 1이라는 값이 반환되기 때문에
‘==’ 연산자를 이용하여 true/fasle를 처리할 수 있다.
👨🏻💻 BoardServiceTests 작성
testDelete()는 게시물이 존재하면 true를 반환
testUpdate()는 게시물 조회하고 title 값 수정한 이후에 업데이트 진행
💁🏻♂️ 결과
삭제가 되었다.