sitelink1 | https://github.com/mochajs/mocha |
---|---|
sitelink2 | https://github.com/shouldjs/should.js |
sitelink3 | https://github.com/visionmedia/supertest |
extra_vars4 | |
extra_vars5 | |
extra_vars6 |
각 모듈들은 npm사이트(https://www.npmjs.com)에서 검색하면 상세 내용 확인 가능
1. mocha : 자바스크립트 또는 브라우저 단위 테스트 프레임워크
1.1. 설치
- 명령어 : npm i mocha --save-dev
> save dev 옵션은 dependencies가 아닌 devDependencies쪽으로 mocha를 설치한다 (package.json, 개발 및 테스트 환경에서 사용하는 모듈로 분류됨)
1.2. 사용
- 테스트 하려는 js 와 동일한 위치에 *.spec.js 파일을 생성한다
> index.js 를 테스트 하는 경우 index.spec.js 파일 생성
- index.js 에 정의한 users 목록을 반환하는 비즈니스 로직을 테스트하도록 다음과 같이 코딩한다
const assert = require('assert')
describe('GET /users', () => { //테스트 꾸러미 (테스트 케이스들을 담는 자루)
it('배열을 반환한다', () => { //테스트 케이스
assert.equal(1,1)
})
})
1.3. 실행
- package.json 의 scripts 부분에서 test 에 "mocha ./index.spec.js" 라고 설정 (테스트용 소스 파일명은 보통 spec이라는 관용 키워드로 구분함)
- 콘솔에서 npm test 라고 실행 (test t 로도 구동 가능)
2. Should : mocha의 assertion과 같은 단위 테스트용 검증(assertion) 라이브러리 (키워드가 should)
2.1 설치
- 콘솔에서 npm i should --save-dev
2.2. 사용
const assert = require('assert')
const should = require('should')
describe('GET /users', () => {
it('배열을 반환한다', () => {
//assert.equal(1,1) <-- 검증 모듈로 assert 대신 should 를 많이 사용한다
(1).should.equal(1) //should는 영어 문장과 같은 구조를 가지고 있어 API 학습이 쉽다
})
})
2.3. 실행
- 콘솔에서 npm test 라고 실행
3. SuperTest : 단위 테스트가 아닌 통합 테스트를 할 수 있는 라이브러리 (CI가 가능한 테스트 자동화 툴)
3.1 설치
- 콘솔에서 npm i supertest --save-dev
3.2. 사용
const assert = require('assert')
const should = require('should')
const request = require('supertest')
const app = require('./index') //내부적으로 express 서버를 구동시키게 되므로 index에 있는 express를 객체를 넘겨 받아야 한다
describe('GET /users', () => {
it('배열을 반환한다', (done) => {
request(app)
.get('/users')
.end(err, res) => {
//console.log(res.body)
res.body.should.be.instanceof(Array) //응답 내용은 배열이어야 한다
res.body.forEach(user => {
user.should.have.property('name') //배열안의 user 객체는 name이라는 속성을 가지고 있어야 한다
})
done() //테스트 완료를 알려야 함
})
})
})
3.3. 실행
- 콘솔에서 npm test 라고 실행
※ Tacademy 온라인 강의 4강 TDD 이해 및 환경 구축에서는 SuperTest를 구축할때 기존의 express를 export하여 테스트용 서버로 운용하는 방법으로 실습을 진행한다
=> https://tacademy.skplanet.com/live/player/onlineLectureDetail.action?seq=134#sec2
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
5 | [TDD/REST-7강] 코드 리팩토링 (express.Router, control) | 황제낙엽 | 2020.12.04 | 87 |
4 | [TDD/REST-6강] 사용자 API 개발 | 황제낙엽 | 2020.12.03 | 81 |
3 |
[TDD/REST-목차][T아카데미] Node.js 기반의 REST API 서버 개발
![]() | 황제낙엽 | 2020.12.03 | 77 |
2 | [TDD/REST-5강] TDD로 API 서버 개발 (작업절차, get users 테스트) | 황제낙엽 | 2020.12.01 | 82 |
» | [TDD/REST-4강] TDD 이해 및 환경 구축 (Rest API, TDD, mocha, Should, SuperTest) | 황제낙엽 | 2020.12.01 | 83 |