본문 바로가기
학습/Node.js

mocha, should, supertest 사용하기

코동이 2022. 1. 15.

* 개요

 

자바에서 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