-
첫 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;
'웹프로그래밍 > node.js' 카테고리의 다른 글
사용자 추가 API 성공, 실패시 (0) 2019.06.03 사용자 삭제 API 성공, 실패시 (0) 2019.06.03 사용자 조회 API 성공, 실패시 (0) 2019.06.03 테스트 주도 개발 (TDD) (0) 2019.06.03 익스프레스(ExpressJS) 기초 (0) 2019.06.03 댓글