Skip to content

[송창준] sprintMission11#271

Merged
chemonoworld merged 16 commits intocodeit-bootcamp-nodejs:송창준from
kokooa:dev
Dec 4, 2025
Merged

[송창준] sprintMission11#271
chemonoworld merged 16 commits intocodeit-bootcamp-nodejs:송창준from
kokooa:dev

Conversation

@kokooa
Copy link
Collaborator

@kokooa kokooa commented Nov 30, 2025

요구사항

Github Actions 활용

  • 브랜치에 pull request가 발생하면 테스트를 실행하는 액션을 구현해 주세요.
  • main 브랜치에 push가 발생하면 AWS 배포를 진행하는 액션을 구현해 주세요.
  • 개인 Github 리포지터리에서 Actions 동작을 확인해 보세요.

Docker 이미지 만들기

  • 다음을 만족하는 Dockerfile과 docker-compose.yaml을 작성해 주세요.

  • Express 서버를 실행하는 Dockerfile을 작성해 주세요.

  • Express 서버가 파일 업로드를 처리하는 폴더는 Docker의 Volume을 활용하도록 구현해 주세요.

  • 데이터베이스는 Postgres 이미지를 사용해 연결하도록 구현해 주세요.

  • 실행된 Express 서버 컨테이너는 호스트 머신에서 3000번 포트로 접근 가능하도록 구현해 주세요.

주요 변경사항

멘토에게

  • 브렌치에 pull request가 발생하면 테스트를 실행하는 액션을 여러 차례 시도했지만 테스트가 계속 실패합니다..
  • 일반 코드 작성보다 테스트 코드도 더 어렵게 느껴집니다.
  • 조언 주시면 감사하겠습니다!

@chemonoworld
Copy link
Collaborator

chemonoworld commented Dec 3, 2025

CI 깨지는 것 같네요. 한번 보겠습니다

@chemonoworld
Copy link
Collaborator

chemonoworld commented Dec 3, 2025

봤을 때는 환경변수 문제 또는 DB문제일 확률이 좀 높아보이긴 하거든요.

일단 supertest같은걸로 진행하는 e2e 테스트의 경우 물론 CI에서 돌리는 회사들도 있겠지만서도 환경변수 주입 등의 보안상의 까다로움으로 인해 저는 유닛테스트정도 CI에서 돌리는 것을 추천하긴 합니다.

특히나 지금은 public repo기 때문에 더더욱 까다로운 상황이죠. 물론 서드파티에서 엔드투엔드 암호화해서 잘 가져오거나 github secret 잘 써서 github actions 스크립트를 잘 짜면 되긴 하지만... 예전에도 말씀드렸듯이 결국 테스트코드 관리도 비용 또는 리소스이기 때문에 굳이.. 라는 생각이 들긴합니다.

-> 오히려 e2e테스트 대신 QA를 빡세게 하는게 더 좋은 제품을 만들 수 있음

@chemonoworld
Copy link
Collaborator

일단 올려두신거에서 좀 이것저것 만져볼게요

@chemonoworld
Copy link
Collaborator

일단 단위테스트만 돌렸을 때 성공하도록 수정 해두긴했어요.

  1. jest 버전 낮춤
  2. jest ESM과 함께 설정 문제가 좀 있었음 - jest.unstable_mockModule() 사용
  3. 단위테스트만 돌도록 스크립트 수정

@chemonoworld
Copy link
Collaborator

chemonoworld commented Dec 3, 2025

통합테스트 or e2e테스트는 제 생각엔 테이블 생성이 빠져있거나 데이터 문제가 있거나 여러 원인이 있을 수 있어보이네요.

@chemonoworld
Copy link
Collaborator

chemonoworld commented Dec 3, 2025

통합테스트도 통과해도록 해두었어요.
문제는 다음과 같습니다.

  1. 애초에 로컬에서도 통합테스트 실패하는 케이스가 많았음
    1-1. 일단 /api/... path가 기본적으로 있어야됨.
    1-2. 에러코드가 비즈니스 로직과 테스트에서의 불일치하는 부분들이 있었음.
    1-3. beforeAll에서 기존 데이터 truncate 해줘야함

아 그리고 dockerignore 추가하시고 제외할만한거 추가해주세요~

확인하시고 댓글 남겨주시면 머지하겠습니다.

@kokooa
Copy link
Collaborator Author

kokooa commented Dec 4, 2025

봐주시느라 고생많으셨습니다! 이제 테스트는 통과되네요 dockerignore 작성한거 확인한번만 부탁드릴게요!

@chemonoworld chemonoworld merged commit 0cf147a into codeit-bootcamp-nodejs:송창준 Dec 4, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants