[태호] e2e (feat.multiple env 사용 시도) - boostcampwm2023/web04-ALGOCEAN GitHub Wiki
"test:e2e": "yarn docker:up && sleep 15 && yarn test:push && dotenv -e .env.test -- jest --forceExit --config ./test/jest-e2e.json && sleep 5 && yarn docker:down"
e2e test를 할 때에는 실제 db를 사용해야함
mocking을 할 수도 있지만 mocking을 하게 되면 response가 server에 의존적이지 않음
이는 실 사용자가 받는 응답이 무엇인지 정확히 모르게 됨
local환경에서 db를 사용하기 위해 .env.test파일을 생성 후 환경변수 세팅을 해주었음
이후 dotenv-cli를 통해 env파일 지정 후 실행해주도록 함
예) "test:push": "dotenv -e .env.test yarn prisma db push”
위의 명령 실행 결과는
임. (12.06에는 분명히 안됐는데 오늘은(12.07) 됨)
즉 -e옵션을 통해 .env.test의 환경변수들을 성공적으로 load함 다만 왜 loaded from .env라고 적혀있는지는 모르겠음
// .env.test의 내용
NODE_ENV="test"
DATABASE_URL="mysql://root:root@localhost:3307/test?schema=prisma"
GITHUB_CLIENT_ID="히히"
GITHUB_CLIENT_SECRET="히히"
JWT_SECRET="히히"
REDIS_URL="redis://127.0.0.1:6379"
REDIS_HOST="127.0.0.1"
REDIS_PORT="6379"
REDIS_PASSWORD="히히"
// package.json의 scripts 내용
"test:e2e": "yarn docker:up && sleep 10 && yarn test:push && dotenv -e .env.test -- jest --config ./test/jest-e2e.json && yarn docker:down",
"prisma:generate": "yarn pnpify prisma generate",
"test:push": "dotenv -e .env.test yarn prisma db push",
"docker:up": "docker-compose -f test.dockerfile.yml up -d",
"docker:down": "docker-compose -f test.dockerfile.yml down -v"
yarn run test:e2e를 통해 local db를 실행하고 schema를 push한 뒤 e2e test를 진행하고 local db를 삭제함
어제는 아무튼 대충 테스트 다 통과했는데 오늘 새 브랜치 파고 테스트 해보니까 테스트 실패하는게 나옴ㅠ
e2e test를 해보니까 잘못 구현된 API들을 발견할 수 있었음
답변이 채택되었을 때 point가 1 증가해야하는데 2 증가하는 것을 확인했음
실제 구현된 부분을 보니 2 증가하는 코드가 작성되어 있음
user 객체가 그대로 넘어오는 API를 발견함
User의 Id는 넘어오면 안되는데 넘어오는 것을 볼 수 있음
그리고 return문을 이렇게 작성할 경우
응답이 위와 같이 넘어옴
json안에 json이 담겨도 되긴 하는데 json안에 json이 담기면 FE에서 불편하지 않을까? 라는 생각이 들음
앞서 언급한 API에 대한 test 코드임
test 성공함 아래 한개 실패한거는 user id 넘어오는 API임
아까 실패했던 이유는 아래 코드에서 return 문을 생략했기 때문임