서버 코드 예제
- GET 메서드 API
- 상태코드 200 리턴
- JSON 형태로 사용자 이름 전달
- POST 메서드 API
- 요청 시 body에 name을 전달 받음
- 상태코드 201 리턴
- JSON 형태로 body에 전달 받았던 이름 전달
import express from 'express';
const app = express();
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
app.get('/user', (req, res) => {
res.status(200).json({ name: 'modolee' });
});
app.post('/user', (req, res) => {
const { name } = req.body;
res.status(201).json({ name })
});
export default app;
테스트 코드 예제
- Jest 기반으로 테스트. reuqest 생성, expect 모두 supertest를 사용
import request from 'supertest'
import app from './app';
describe('End-to-End Test', () => {
describe('GET /user', () => {
test('responds with json', async () => {
await request(app)
.get('/user')
.set('Accept', 'application/json')
.expect(200)
.expect('Content-Type', /json/)
.expect({ name: 'modolee' });
});
});
describe('POST /user', () => {
test('responds with name in json', async () => {
await request(app)
.post('/user')
.set('Accept', 'application/json')
.type('application/json')
.send({ name: 'modolee' })
.expect(201)
.expect('Content-Type', /json/)
.expect({ name: 'modolee' });
});
});
});
- Jest 기반으로 테스트. request 생성은 supertest를 사용하고, expect는 jest를 사용
import request from 'supertest'
import app from './app';
describe('End-to-End Test', () => {
describe('GET /user', () => {
test('responds with json', async () => {
const res = await request(app)
.get('/user')
.set('Accept', 'application/json');
expect(res.status).toBe(200);
expect(res.headers['content-type']).toMatch('/json');
expect(res.body).toEqual({ name: 'modolee' });
});
});
describe('POST /user', () => {
test('responds with name in json', async () => {
const res = await request(app)
.post('/user')
.set('Accept', 'application/json')
.type('application/json')
.send({ name: 'modolee' })
expect(res.status).toBe(201);
expect(res.headers['content-type']).toMatch('/json');
expect(res.body).toEqual({ name: 'modolee' });
});
});
});
앗... 사랑합니다...