[ CSAPI] mongodb 연결 테스트 코드 작성

[ CSAPI] mongodb 연결 테스트 코드 작성

목표

node 컨테이너와 mongo 컨테이너를 동시에 구동 시켰을 때, 연결이 잘 되었는지 확인하는 테스트 코드를 작성하려고 한다. 왜냐하면 둘이 연결이 잘 되었는지 확인하는 방법이 지금으로썬 아래와 같이 node 컨테이너의 log를 확인하는 방법밖에 없기 때문이다.

docker-compose logs node Attaching to csapi_node_1 node_1 | Example app listening at http://localhost:3000 node_1 | MongoDB Connected...

그리고 겸사겸사 mongoose를 이용해 mongodb를 사용하는 방법을 학습 및 복습할 겸 테스트 코드를 작성한다.

mongo test 코드 작성

먼저 간단하게 schema를 만들어 주고, schema에 알맞는 데이터를 insert 한 뒤에, insert 한 데이터를 검색해서 해당 데이터가 있으면 test pass, 없으면 test fail 하는 방식으로 작성해본다.

1. mongodb 연결 단계

- 현재 연결 코드

mongoose.connect('mongodb://mongo:27017', { }).then(() => console.log('MongoDB Connected...')) .catch(err => console.log(err))

연결하는 uri 가 단순히 mongo:27017 인데, 이렇게 되면, mongodb에 특정 db에 연결하는 게 아니게 된다. 테스트 결과, 만약 mongo:27017 uri로 연결 된 상태에서 test.js 파일로 데이터를 입력하게 되면 test라는 이름의 db가 자동으로 생성되게 된다. 마지막에 db를 drop(삭제)할 것이기 때문에 큰 문제는 되지 않겠지만 알고는 있어야 한다.

2. test 코드 시나리오

- 현재 .gitlab-ci.yml

test: stage: test before_script: - echo 'Clear containers...' - docker-compose down -v script: - docker-compose up -d - echo 'testing....' after_script: - docker-compose down -v tags: - csapi-runner only: - develop

test 단계의 script 중 echo 'testing...' 부분에 테스트 코드를 동작시킬 것이다. 여러 툴을 생각해 보았는데, nodejs 에서는 Mocha 라는 라이브러리를 사용한다.

테스트 코드의 시나리오는 node 컨테이너에서 mongo 컨테이너로 데이터를 임시로 하나 입력한 뒤, 해당 데이터를 node에서 find 할 수 있으면 pass, 실패하면 fail 하는 방식으로 진행하려고 한다.

3. mocha 설정

- package.json

mocha가 설치되도록 추가한다. 그리고 npm test 명령어 사용시 mocha가 실행되도록 한다.

{ "name": "csapi-node", "version": "1.0.0", "description": "csapi user auto service", "main": "index.js", "scripts": { "test": "node ./node_modules/mocha/bin/mocha" }, "author": "Penguin135", "license": "ISC", "dependencies": { "express": "^4.17.1", "mocha": "^9.1.1", "mongoose": "^6.0.7" } }

4. 테스트 코드 작성

from http://not-to-be-reset.tistory.com/512 by ccl(A) rewrite - 2021-09-23 17:26:14