기타
Node.js express 프레임워크 매우 심플한 TDD.
oraclian
2019. 8. 13. 14:17
테스트 환경 셋팅하기
# 프로젝트 init
npm init -y
# 필수 라이브러리 및 프레임워크 설치하기
npm i --save express
npm i --save-dev chai chai-http mocha
# 아래와같이 package.json 파일을 수정
"scripts": {
"test": "./node_modules/mocha/bin/mocha"
},
main.js 파일을 생성
const express = require('express')
const bodyParser = require('body-parser')
const app = express()
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended:true}))
app.get('/', (req, res) => {
console.log('GET /')
res.send('Hello World')
})
app.get('/user', (req, res) => {
console.log('GET /user')
res.json({ username: 'John', pw: 'test1234' })
})
module.exports = app
test 폴더 생성후 test.js 파일 생성
const chai = require('chai')
const chaiHttp = require('chai-http')
chai.use(chaiHttp)
const expect = chai.expect;
const app = require('../main');
describe('test case 1', () => {
it('200을 리턴해야 한다. (1000ms 이내)', function(done) {
this.timeout(1000)
chai.request(app)
.get('/')
.end((err, res) => {
expect(res).to.have.status(200)
done()
})
}),
it('200을 리턴해야 한다. (100ms 이내)', function(done) {
this.timeout(100)
chai.request(app)
.get('/')
.end((err, res) => {
expect(res).to.have.status(200)
done()
})
}),
it('200을 리턴해야 한다. (10ms 이내)', function(done) {
this.timeout(10)
chai.request(app)
.get('/')
.end((err, res) => {
expect(res).to.have.status(200)
done()
})
})
})
describe('test case 2', () => {
it('GET / 테스트. return ("Hello World")', function(done) {
this.timeout(1000)
chai.request(app)
.get('/')
.end((err, res) => {
expect(res.text).to.equal('Hello World')
done()
})
}),
it('GET /user 테스트. return { username: "John", pw: "test1234" }', function(done) {
this.timeout(1000)
chai.request(app)
.get('/user')
.end((err, res) => {
expect(err).to.be.not.ok
expect(res).to.have.status(200)
expect(res).to.be.json
expect(res.body).to.deep.equal({ username: "John", pw: "test1234" })
done()
})
})
})
테스트 수행
npm test
결과 이미지