첫 API 테스트 만들기
성공
유저 객체를 담은 배열로 응답한다
최대 limit 갯수만큼 응답한다.
실패
limit이 숫자형이 아니면 400을 응답한다.
offset이 숫자형이 아니면 400을 응답한다.
일단 서버를 실행하는 함수를 bin/www로 빼자
www.js 코드
const app = require('../express.js')
app.listen(3000, () => {console.log(`running`)})
그리고 express.js 에서 앱모듈을 공개하자
module.exports = app -> express.js 에 추가
package.json 파일에서 스크립트 부분도 당연히 바꿔줘야함
예시 코드)
index.spec.js 코드
//테스트파일은 파일명에 spec이란 단어를 넣거나 폴더를 만든다
const assert = require('assert') //node 기본 모듈
const should = require('should')
const request = require('supertest')
const app = require('./express') //express 파일에서 가져옴
describe('GET /users', () => {
describe('성공', () => {
it('성공', done => {
request(app)
.get('/users')
.end((err, res) => {
res.body.should.be.instanceof(Array)
res.body.forEach(user => {
user.should.have.property('name')
})
})
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)
})
})
})
express.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' }
]
app.get('/', (req, res) => {
res.send('Hello World!')
})
app.get('/users', (req, res) => {
req.query.limit = req.query.limit || 10; //limit에 값이 없다면 0을넣자
const limit = parseInt(req.query.limit, 10);
if (Number.isNaN(limit)) { //숫자인지 아닌지 확인 문자열이 들어오면 숫자로 변환이 안되니깐
res.status(400).end();
}
else {
res.json(users.slice(0, limit));
}
})
module.exports = app
'NodeJs' 카테고리의 다른 글
TDD[7] 코드 리팩토링 및 데이터베이스 연동 (0) | 2021.04.01 |
---|---|
TDD[6] 사용자목록 및 사용자 상세정보 API개발 (0) | 2021.03.31 |
TDD[4] TDD 이해 및 환경 구축 (0) | 2021.03.31 |
TDD[3] REST API 이해와 설계 (0) | 2021.03.31 |
TDD[2] Express.js 역할 및 구조의 이해 (0) | 2021.03.31 |