TestCode 14

컨트롤러 테스트하기

컨트롤러외부 세계의 요청을 가장 먼저 받는 계층파라미터에 대한 최소한의 검증을 수행하는 것을 목표로 한다.Business Layer, Persistence Layer를 Mocking 해서 테스트를 해보자.실습ProductController에 대해 TestCode를 작성해 보자@WebMvcTest(controllers = ProductController.class) 어노테이션을 사용해 ProductController와 관련된 빈만 로드하여 최소한의 빈만 로드한다.가짜 객체인 Mock객체를 주입받기 위해 @MockBean을 이용해 private ProductService를 선언해 준다.MockMvc를 주입받기 위해 @Autowired를 통해 주입받는다MockMvc 객체를 통해 컨트롤러의 요청과 응답을 실제 ..

TestCode 2024.06.30

Intellij에서 HTTP 요청 보내기

개요프로젝트 개발을 하던 중 Get 요청은 브라우저에서 실행이 가능하지만 Post 요청은 불가능하다 Post요청을 할 수 있는 방법 중 Intellij에서 요청하는 방법을 알아보자   방법프로젝트의 최 상단 디렉터리에 http 폴더를 만들어 주고 그 아래 .http 파일을 만들어 주자  각 요청은 ### 으로 구분해서 사용할 수 있다.요청 예시### 주문 신규 생성POST localhost:8080/api/v1/orders/newContent-Type: application/json{ "productNumbers": [ "001", "002" ]} 실행 버튼을 누르면 요청이 전송된다.응답도 Service 탭에서 받을 수 있다. POST http://localhost:8080/api/v1/o..

TestCode 2024.06.22

@AfterEach

개요테스트 코드를 작성 중 개별 테스트에 대해선 통과를 했는데 테스트를 여러 개를 같이 돌리게 된다면 테스트가 실패하는 경우가 발생했다. 이유를 알아보자.      테스트 설명본 프로젝트는 Cafe Kiosk를 구현하는 프로젝트로 주문을 생성하기 위해 상품을 데이터베이스에 등록을 한 후 주문번호 리스트를 받아 주분을 생성하는 테스트이다.2개의 테스트에서 각각 상품을 만들어 데이터베이스에 save 해주었다.    테스트 실패 테스트를 개별로 실행했을 땐 두 개의 테스트 모두 성공을 했다.하지만 두 개의 테스트를 동시에 실행하면 하나의 테스트에서 아래와 같은 에러를 발생하고 실패하는 경우가 발생했다. java.lang.IllegalStateException: Duplicate key 001 (attempte..

TestCode 2024.06.22

스프링부트 실행 시 .sql로 데이터 insert하기

개요 프로젝트를 진행하면서 개발할 때 ddl-auto create 옵션을 사용할 때 테이블 데이터가 된다. 데이터베이스에 데이터를 매번 Postman으로 데이터를 입력하는 대신, data.sql 파일을 생성하여 서버가 실행될 때 데이터베이스에 자동으로 SQL이 실행되도록 설정했다.   방법 1. 프로젝트의 resources폴더에 data.sql 파일을 생성한다.2. data.sql 폴더 속 실행할 sql을 작성한다.insert into product(product_number, type, selling_status, name, price)values ('001', 'HANDMADE', 'SELLING', '아메리카노', 4000), ('002', 'HANDMADE', 'SELLING', '카페..

TestCode 2024.06.19