Docker 사용하면서 기록하는 명령어 복기용 메모장. docker run -p 5432:5432 -e POSTGRES_PASSWORD=비밀번호 -e POSTGRES_USER=유저이름 -e POSTGRES_DB=DB이름 --name 컨테이너이름 -d postgres docker exec -i -t postgres_boot bash su - postgres psql --username 유저이름 --dbname DB이름 \list (데이터 베이스 조회) \dt (테이블 조회) docker run docker run => 새로운 Docker 컨테이너를 생성하고 실행한다 -p 5432:5432 => 호스트의 5432 포트와 컨테이너의 5432 포트를 연결한다 -e => 환경변수를 설정한다. 뒤에 따라오는 POS..
Tool
M1 Mac에 Docker Desktop 설치하고 환경 변수에 추가했다. 공식 홈페이지에서 Docker.dmg 파일을 다운로드 받아서 설치했는데, 환경 변수는 자동으로 안 잡아주더라~ 좀 찾아보니 /Applications/Docker.app/Contents/Resources/bin 경로에 있었다. 스크립트로 환경 변수에 추가해주자. echo 'export PATH="/Applications/Docker.app/Contents/Resources/bin:$PATH"' >> ~/.zshrc source ~/.zshrc 아래와 같이 실행된다.
멀티미디어 파일을 포함한 글 작성 요청을 처리하는 서버를 개발할 때, 파일 저장소로 AWS S3를 사용하고 있다고 가정하자. 만약 글 작성 요청을 처리하는 중에 서버에 장애가 발생하여 요청이 중단될 경우, 트랜잭션이 실행 결과를 롤백할 때 외부 서비스인 S3의 작업은 함께 롤백되지 않는다. 그렇다면 어떻게 S3의 작업을 롤백해야 할까? 고민하고 검색해서 여러 가지 방법을 찾아봤다. 내가 작성한 메서드의 초기 형태는 아래와 같은 형식이다. S3에 이미지 파일을 올리는게 비즈니스 로직 사이에 있다. @Transactional public PostResponseDto createPost( MultipartFile[] images ) { // 불필요한 코드 지움 Post savedPost = postReposi..
service layer의 테스트 코드에 이어서 controller layer의 테스트 코드 작성하는 방법을 정리해두자. controller를 테스트하기 위해서 주로 @WebMvcTest 애너테이션(이름대로 WebMvc와 관련된 Bean이 등록된다)을 적용한 테스트 클래스에서 테스트 한다. MockMvc: 요청과 응답을 모방하는 클래스다. DispatcherServlet에 요청을 보내는 식으로 작동한다. 배운 것과 나의 생각 Spring security를 사용할 때, 유저 인증 정보를 단위 테스트에서 받을 수 없다. @WebMvcTest는 Spring security configuration을 등록하지 않기 때문에 내가 SecurityConfig에 등록한 필터가 적용되지 않는다. 그래서 SecurityC..
Spring boot와 JUnit5, Mockito를 사용해서 Service layer의 테스트 코드를 작성하는 방법을 찾아봤다. Mockito 라이브러리를 사용해서 연관된 Repository, Service 등은 Mock 객체로 만들고 진짜 테스트 하고 싶은 기능을 테스트 해보자. https://www.baeldung.com/mockito-series 여기에 예제가 많이 있었다. mock 객체로 만들어서 테스트 하기 @ExtendWith: Mockito를 사용하는 환경으로 설정한다. @Mock: 클래스의 가짜 인스턴스를 만들어준다. @InjectMocks: 클래스의 필요한 의존성을 Mock으로 자동으로 주입한 인스턴스를 만들어준다. 배운 것과 나의 생각 Service를 테스트 할 때 중요한 점은 어떤 ..
Controller에서 입력받는 Dto 클래스에 @Valid로 유효성 검사를 할 때, 테스트 코드를 작성하는 방법을 찾아봤다. 크게 WebMvcTest로 Controller를 테스트 하는 방법과 Validator를 사용해서 테스트 하는 방법 두 가지를 찾을 수 있었다. 오직 Dto의 유효성 검사만 테스트 하고 싶었기 때문에 Validator를 사용해서 테스트 하는 방법을 사용했다. Validator로 Dto 유효성 검사 커스텀 유효성 검사가 없기 때문에 기본적으로 제공되는 ValidatorFactory, Validator를 사용해서 테스트 했다. validator의 validateProperty 메서드로 원하는 필드의 유효성 검사만 진행했는데, validate 메서드로 한 번에 모든 필드를 검사할 수도 ..