// index3.js

==========================================

const express = require('express')

// const logger = require('morgan')

const app = express()

const users = [

{id: 1, name: 'Alice'},

{id: 2, name: 'Bek'},

{id: 3, name: 'Chris'}

] // todo

// const userspost = 'TEST'

 

app.get('/', function (req, res) {

res.send('Hello World with morgan!');

});

app.get('/users', (req, res) => {

req.query.limit = req.query.limit || 10 // limit을 요청하지 않으면 10개만큼 응답한다

const limit = parseInt(req.query.limit, 10) // Int화 실패시 NaN으로 값이 지정됨 - Not a Number

// todo

//

// if (limit == NaN) {

if (Number.isNaN(limit)) {

res.status(400).end()

} else {

res.json(users.slice(0, limit))

}

});

 

module.exports = app // express 객체를 외부에서 쓸 수 있도록

==========================================

 

// ./bin/www.js

==========================================

const app = require('../index3.js')

 

app.listen(3001, () => console.log('running morgan'))

==========================================

 

// index3.spec.js

==========================================

const request = require('supertest')

const should = require('should')

const app = require('./index3')

 

describe('TESTING_SAJA GET /users', () => {

  describe('성공', () => {

    it('배열을 반환한다!!!', (done) => { // done은 mocha에서 지원하는 함수임

      request(app)

        .get('/users')

        .end((err, res) => {

          res.body.should.be.instanceof(Array) // 해당 값이 Array인지

          res.body.forEach(user => {

            user.should.have.property('name') // 해당 값의 key값으로 name이 있는지 확인

          })

          if (err) throw err

          done()

        })

      })

      it('최대 limit 개수만큼 응답한다', done => {

        request(app)

          .get('/users?limit=2')

          .end((err, res) => {

            res.body.should.have.lengthOf(2)

            done()

          })

      })

  })

  describe('실패', () => {

    it('limit이 정수가 아니면 400 응답', done => {

      request(app)

        .get('/users?limit=two')

        .expect(400)

        .end(done)

        })

    })

})

==========================================

 

// package.json

==========================================

{

  "name": "node-api-server",

  "version": "1.0.0",

  "description": "",

  "main": "index3.js",

  "dependencies": {

    "express": "^4.17.0",

    "morgan": "^1.9.1"

  },

  "devDependencies": {

    "mocha": "^6.1.4",

    "should": "^13.2.3",

    "supertest": "^4.0.2"

  },

  "scripts": {

    "start": "node ./bin/www.js",

    "test": "mocha ./index3.spec.js"

  },

  "author": "",

  "license": "ISC"

}

==========================================

 

npm test

 

 

 

 

 

+ Recent posts