일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- nodejs
- pwnable.xyz
- Python
- 포너블
- 시스템 해킹
- cloud run
- gcp cloud build
- gcp
- sequelize
- docker
- Batch
- 보안
- 프로그래머스
- programmers
- node.js
- 웹보안
- spring Batch
- kotest
- webhacking.kr
- Baekjoon
- hackctf
- 사이버보안
- 웹해킹
- 리버싱
- 회고
- 파이썬
- 스프링 배치
- 네트워크
- 백준
- gcp ci/cd
uju's Tech
[Node.js]Mocha를 이용해서 간단한 Test 해보기 본문
<본 포스팅은 공부목적으로 작성되었습니다. 혹시 틀린 부분이 있거나 문제가 되는 부분이 있다면 답글 달아주세요!>
지금까지 Node.js를 기반으로 개발을 진행할 때 항상 Post man으로 Api 응답을 하나하나 확인했었다.
테스트 코드를 사용하면 이와 같은 반복적인 행위를 줄여주고 빠른 오류와 버그 확인이 가능하다.
제일 중요한 부분이라고 생각했던 것은 리팩토링의 기초가 된다는 점이었다.
MOCHA를 찾아보니 Node.js의 test 프레임워크로 가장 많이 사용되는 테스트 도구라는 것을 알게되었다.
MOCHA를 설치하고 간단하게 코드를 작성해보도록 하겠다.
위의 공식 문서를 통해 MOCHA를 자세히 살펴 볼 수 있다.
Assertion 라이브러리에는 chai 그리고 test double을 도와주는 sinon 이 있다.
아직 구체적으로 사용해보지 못했지만 chai는 다양한 assertion을 제공해주는 라이브러리고 sinon은 spy,stub,mock등을 지원하는 단위테스트 라이브러리라고 이해했다.
먼저 mocha를 설치해준다. 공식문서에 설치법이 나와있다.
npm install --global mocha
npm install --save-dev mocha
설치 후에 package.json에서 확인 할 수 있다.
또한 package.json에 scripts를 추가하여 npm test 명령어를 통해 간편하게 test 할 수 있도록 하였다.
필자는 test 폴더 안에 test.js를 만들어 주었다.
test.js코드를 살펴보자.
var expect = require('chai').expect;
var sqlite3 = require('sqlite3').verbose();
const assert = require('assert');
read_db = () =>{
var db = new sqlite3.Database('./test.db',(err)=>{
db.all('select * from memeber', (err, data)=>{
if(err) console.log(err);
else console.log(data);
});
});
}
it('test', async function() {
this.timeout(3000);
read_db((data) => {
expect(result[0]['id']).to.equal('soso');
expect(result[0]['pass']).to.equal('1234');
})
});
짧은 코드지만.. 처음 공부해보는 입장으로서.. 공부하고 실행해보는데 까지 시간이 걸렸다..ㅜㅜ
chai는 expect를 사용하기 위해 명시해주었다.
--> chai 또한 설치해주어야 한다.
https://www.chaijs.com/guide/installation/
여기서 확인!
type이 같은지 보려면 expect(,,).to.be.a(,,);
문자열이 동일한지 보려면 expect(,,).to.equal(,,);
등으로 확인할 수 있다.
또한 위의 코드에서 timeout을 따로 지정해준 이유는 저렇게 지정을 안해주니 계속 2초가 지났다는 오류가 발생하여.. timeout을 set해주었다.
set해주니..아래와 같이 정상적으로 작동한다..
간단하게 공식문서를 참고하고 서칭을 통해 구현해나갔는데 아직 이해가 부족한 것 같다.. 조금 더 공부해서 CRUD test code또한 작성해보아야겠다 ,,!
'Node' 카테고리의 다른 글
[Node.js/Sequelize] group by를 이용하여 상태별로 count 출력 - 개발 회고 (0) | 2020.07.16 |
---|---|
[Node.js] json data 객체 안에 객체 배열 추가하기 (0) | 2020.07.06 |
[Node.js] sqlite3 연동부터 사용까지 (feat. sequelize) (0) | 2020.07.06 |
[Node.js] json data 객체만 Response 하기 (0) | 2020.06.30 |
ESLint 설치 및 Airbnb 적용 (0) | 2020.06.13 |