기타

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

 결과 이미지