ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 테스트 주도 개발 (TDD)
    웹프로그래밍/node.js 2019. 6. 3. 16:23

    모카(mocha)

    모카(mocha)는 테스트 코드를 돌려주는 테스트 러너이다. 노드가 바로 테스트 코드를 실행 시킬 수 없다.

    • 테스트 수트 : 테스트 환경으로 모카에서는 describe()으로 구현한다.
    • 테스트 케이스 : 실제 테스트를 말하며 모카에서는 it()으로 구현한다.

    mocha 설치 : npm i -g mocha

     

    utils.spec.js 코드 (테스트 코드,,,,요구사항)

    //spec이 들어가면 test코드이다. 요구사항
    const utils = require('./utils');
    const should = require('should');
    // const assert = require('assert');
    
    describe('utils.js모듈의 capitalize() 함수는', ()=> {
        it('문자열의 첫번째 문자를 대문자로 변환한다', ()=> {
            const result = utils.capitialize('hello');
            // assert.equal(result,'Hello');
            result.should.be.equal('Hello');    //should js로 테스트코드의 가독성을 높힌다.
        }) // 테스트 케이스
    }) // 테스트 수트

    utils.js 코드

    function capitialize(str) {
        return str.charAt(0).toUpperCase() + str.slice(1);
        // return str;
    }
    
    module.exports = {
        capitialize: capitialize
    };

     

    실행 결과

     

    ▶ assert는 노드의 기본 검증 모듈

    ▶ 슈드(should)는 검증(assertion) 라이브러리다.

     


    슈퍼 테스트

    단위테스트: 함수의 기능 테스트 ex) assert, should

    통합테스트 : API의 기능 테스트

    슈퍼테스트: 익스프레스 통합 테스트용 라이브러리

    내부적으로 익스프레스 서버를 구동시켜 실제 요청을 보낸 뒤 결과를 검증한다.

     

    index.spec.js 코드 (테스트 코드,,,,요구사항)

    const app = require('./index');
    const request = require('supertest');
    
    describe('GET /users는', ()=> {
        it('...', (done)=> {        //비동기에 대한 처리
            request(app)
                .get('/users')
                .end((err, res)=> {
                    console.log(res.body);
                    done();
                })
        })
    })

    index.js

    var express = require('express');
    var app = express();
    var morgan = require('morgan');
    var users = [
        {id: 1, name: 'alice'},
        {id: 2, name: 'bek'},
        {id: 3, name: 'chris'},
    ];
    
    app.use(morgan('dev'));
    
    app.get('/users', function (req, res) {
      res.json(users);
    });
    
    app.listen(3000, function () {
      console.log('Example app listening on port 3000!');
    });
    
    module.exports = app;
    

    실행 결과

     

     

    모카 참고 : https://mochajs.org/

    Should.js 참고 : https://github.com/tj/should.js/ 

    슈퍼테스트 코드 참고 : https://github.com/visionmedia/supertest

    댓글

Designed by Tistory.