// 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
'Infra > Node.js' 카테고리의 다른 글
Node.js 체험하기 - 11 _ /bin/www.js를 이용한 test / start 구분 (0) | 2019.05.24 |
---|---|
Node.js 체험하기 - 10 _ devDependencies를 이용한 api TEST 실습 (0) | 2019.05.24 |
Node.js 체험하기 - 9 _ api TEST를 위해 사용하는 devDependencies 소개 (0) | 2019.05.24 |
Node.js 체험하기 - 8 _ npm init의 활용 (0) | 2019.05.24 |
Node.js 체험하기 - 7 _ 요청 객체와 응답 객체 (0) | 2019.05.24 |