ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 첫 API 테스트 만들기
    웹프로그래밍/node.js 2019. 6. 3. 16:55

    성공

    • 유저 객체를 담은 배열로 응답한다
    • 최대 limit 갯수만큼 응답한다

    실패

    • limit이 숫자형이 아니면 400을 응답한다
    • offset이 숫자형이 아니면 400을 응답한다
    const request = require('supertest');
    const should = require('should');
    const app = require('./index');
    
    describe('GET /users는', ()=> {
        describe('성공시', ()=> {
            it('유저 객체를 담은 배열로 응답한다.', (done)=> {        //비동기에 대한 처리
                request(app)
                    .get('/users')
                    .end((err, res)=> {
                        res.body.should.be.instanceOf(Array);   // res의 body값이 배열인지 검증하는 코드
                        done();
                    })
            })
        })
    })


    index.spec.js 코드

    const request = require('supertest');
    const should = require('should');
    const app = require('./index');
    
    describe('GET /users는', ()=> {
        describe('성공시', ()=> {
            it('유저 객체를 담은 배열로 응답한다.', (done)=> {        //비동기에 대한 처리
                request(app)
                    .get('/users')
                    .end((err, res)=> {
                        res.body.should.be.instanceOf(Array);   // res의 body값이 배열인지 검증하는 코드
                        done();
                    });
            });
            it('최대 limit 갯수만큼 응답한다', (done)=> {
                request(app)
                .get('/users?limit=2')
                .end((err, res)=> {
                    res.body.should.have.lengthOf(2);   //최대 2개 까지만  
                    done();
                });
            });
        });
        describe('실패시', ()=> {
            it('limit이 숫자형이 아니면 400을 응답한다', (done)=> {        //비동기에 대한 처리
                request(app)
                    .get('/users?limit=two')
                    .expect(400)
                    .end(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) {
        req.query.limit = req.query.limit || 10;    //limit이 설정되지 않은 경우에는 기본 값을 10으로 설정
        const limit = parseInt(req.query.limit, 10);   //사용자가 보낸 limit을 받을 수 있다. 문자열로 들어옴 "2"
        if(Number.isNaN(limit)) {           // 숫자가 아니면 실행
            return res.status(400).end();
        }
        res.json(users.slice(0, limit));    // slice(어디서부터, 어디까지)
    });
    
    app.listen(3000, function () {
      console.log('Example app listening on port 3000!');
    });
    
    module.exports = app;
    

     

     

    댓글

Designed by Tistory.