* 개요
자바에서 TDD를 했던 경험을 바탕으로, node js 에서 어떻게 사용하는지 궁금해서 수강합니다. mocha를 이용하며, describe - it 구조를 활용합니다. 이전에 자바에서 사용했던 describe - it 작성 방식이 여기서 차용된 것임을 알았습니다. 이미 한번 자바에서 해보고나니 이해하는데 크게 어려움은 없었습니다.
* mocha, should, supertest란?
<Mocha>
테스트 수트 : 테스트 환경으로 모카에서 describe()로 구현합니다.
테스트 케이스 : 실제 테스트를 말하며 모카에서는 it()로 구현합니다.
<Should>
'노드 assert 말고 서드파티 라이브러리를 사용하라'
슈드는 단위테스트에서 사용하는 검증 라이브러리입니다.
가독성 높은 테스트 코드를 만들 수 있습니다.
<SuperTest>
단위테스트는 함수의 기능을 테스트하는데, SuperTest는 통합테스트입니다.
익스프레스 통합 테스트용 라이브러리입니다.(API 기능 테스트)
내부적으로 익스프레스 서버를 구동시켜 실제 요청을 보낸 후 위 결과를 검증합니다.
package.json의 dependencies에 mocha, should, supertest를 추가합니다.
* mocha, should, supertest를 이용해서 테스트하기
//utils.js
function capitalize(str) {
return str.charAt(0).toUpperCase() + str.slice(1);
}
module.exports = {
capitalize: capitalize
};
capitalize 함수는 문자열을 입력받아 맨 앞을 대문자로 바꾸는 함수입니다.
module.exports를 통해 해당 함수를 외부 모듈로 만듭니다.
const utils = require("./utils");
const assert = require("assert");
describe('utils.js 모듈의 capitalize() 함수는', () => {
it('문자열의 첫번째 문자를 대문자로 변환한다', () => {
const result = utils.capitalize('hello');
assert.equal(result, 'Hello');
});
});
describe - it으로 테스트를 만듭니다.
외부모듈로 만든 utils를 테스트하기 위해 describe에서 설명을 작성합니다.
it안에서 utils의 capitalize 메서드를 실행하고 assert로 검증합니다.
asssert는 nodejs에서 제공하는 기본모듈입니다. assert가 equal이면 success, 다르면 fail을 리턴합니다.
*assert -> should로 바꾸기
const utils = require("./utils");
const should = require("should");
describe('utils.js 모듈의 capitalize() 함수는', () => {
it('문자열의 첫번째 문자를 대문자로 변환한다', () => {
const result = utils.capitalize('hello');
result.should.be.equal('Hello');
});
});
asesrt를 should로 바꿉니다. assert보다 훨씬 직관적이고 다양한 기능을 사용할 수 있습니다.
assert.equal()보다는 result.should.be.equal()을 사용하는 습관을 가집니다.
*supertest 사용하기
describe('GET /users는', () => {
it('...', () => {
request(app)
.get('/users')
.end((err, res) => {
console.log(res.body);
});
});
});
supertest로 request를 사용해서 API 기능 테스트를 할 수 있습니다.
*정리
mocha의 describe - it으로 테스트 코드를 만들 수 있습니다.
assert대신에 should를 사용하면 훨씬 더 직관적이게, 다양한 기능으로 작성할 수 있습니다.
suerptest를 통해 API를 테스트 할 수 있습니다.
'학습 > Node.js' 카테고리의 다른 글
라우터 컨트롤러 함수로 분리 (0) | 2022.01.17 |
---|---|
TDD로 API 서버 개발하기 (0) | 2022.01.15 |
강의 후기 (0) | 2022.01.15 |
node js 데이터베이스 이용하기 (0) | 2022.01.15 |
node js 파라미터, 쿠키, 세션 이용하기 (0) | 2022.01.15 |