API 6

BDD 스타일 Mockito API

BDD는 잘짠 TDD 와 같다. BDD는 말 그대로 행동 주도 개발이다. → 사용자의 행위까지 생각하고 테스트하며 개발한다. 테스크는 Given-When-Then 이라는 양식에 맞춰서 사용한다. 아래는 테스트 코드는 BDD 방식으로 변경한 예시이다. /* Given */ when(memberService.findById(1L)).thenReturn(Optional.of(member)); when(studyRepository.save(study)).thenReturn(study); // when 을 BDD 스타일로 변경하면 given을 사용 given(memberService.findById(1L)).willReturn(Optional.of(member)); given(studyRepository.save..

JAVA 2022.12.26

애플리케이션 테스트 DB 구분

docker 사용하여 애플리케이션 DB 생성 # docker 로 postgres 컨테이너 실행 # -e 는 환경변수 설정 POSTGRES_PASSWORD를 pass로 사용하겠다. # 마지막 postgres가 이미지 docker run --name ndb -p 5432:5432 -e POSTGRES_PASSWORD=pass -d postgres # docker 컨테이너 들어가기 docker exec -i -t ndb bash su - postgres # db 접속 psql -d postgres -U postgres 우리는 애플리케이션에서 postgresql을 사용하고 test에서는 h2 DB를 사용해야한다면? test 에 관한 설정파일을 따로 만들어줘야한다! 1. test 디렉토리 하위에 resources..

JAVA 2022.08.18

[JAVA] API 구현 시 테스트 개발

@WebMvcTest MockMvc 빈을 자동 설정 해준다. 그냥 가져와서 쓰면 됨. 웹 관련 빈만 등록해준다. @MockMvc 스프링 MVC 테스트 핵심 클래스 웹 서버를 띄우지 않고도 요청을 처리하는 과정을 확인가능 → 컨트롤러 테스트용으로 자주 쓰임 테스트 내용 1. 입력값들을 전달하면 JSON 응답으로 201 값이 나오는지 확인 - Location 헤더에 생성된 이벤트를 조회할 수 있는 URI 담겨있는지 확인 - id는 DB에 들어갈 때 자동 생성된 값으로 나오는지 확인 @RestController @ResponseBody를 모든 메소드에 적용한 것과 동일 ResponseEntity를 사용하는 이유 응답코드, 헤더, 본문, 모두 다루기 편한 API Locatio..

JAVA 2022.06.02

[JAVA] CRU API

회원등록 API를 만들때 controller에서 entity를 파라미터로 받아서 사용하지 말자. entity는 굉장히 여기저기서 사용되므로 이름이 바뀌거나 하기 쉽다. 근데 이때 이름이 바뀌면 API 스펙이 바뀌므로 API가 작동이 안될수 있다. 따라서 API 를 개발할 때는 controller 에서 DTO를 사용하자! @RestController // Controller + ResponseBody -> 데이터를 바로 json이나 xml로 보내자! @RequiredArgsConstructor public class MemberApiController { private final MemberService memberService; @PostMapping("/api/v1/members") public Cre..

JAVA 2022.05.17

[JAVA] 프로젝션과 페이징

프로젝션이란? select 절에 조회할 대상을 지정하는 것 프로젝션 대상 : 엔티티, 임베디드 타입, 스칼라 타입 ( 숫자, 문자 등 기본 데이터 타입 ) select m from Member m → 엔티티 프로젝션 select m.team from Member m → 엔티티 프로젝션2 select m.address from Member m → 임베디드 타입 프로젝션 select m.username, m.age from Member m → 스칼라 타입 프로젝션 distinct 로 중복 제거 가능 엔티티 프로젝션 웬만하면 sql하고 jpql 문법하고 거의 비슷하게 명시 해야한다.( 예측이 가능하기 때문에 ) Member에서 Team 정보를 가져올 때 1번처럼하나 2번처럼 하나 쿼리는 같게 나가지만 개발자가..

JAVA 2022.01.13

[Django] Django Kakao Login API

- 카카오 로그인 진행 과정 카카오 개발자 애플리케이션 등록 + 카카오 로그인 활성화 아래 링크에서 내 애플리케이션을 하나 생성하면 앱 키를 생성 받을 수 있음 앱 키 생성 확인 후 카카오 로그인 활성화 + Redirect URI를 추가해 줘야함 링크 : https://developers.kakao.com/ Kakao Developers 카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다. developers.kakao.com Code class KakaoSignInView(View): """ 인증 코드 받아오기 """ def get(self, request): current_site = get_current_site..

Python & Django 2021.08.25