1. Jest
1) 개요
- 간단함에 중점을 둔 자바스크립트 테스트 프레임워크
- 사용처: Babel, Typescript, Node, React, Angular, Vue 등
- Official: https://jestjs.io
2) 특징
- 별도의 설정 없이 사용할 수 있으며 커맨드 라인 옵션을 사용할 수 있다.
- 각각의 테스트가 독립적으로 병렬 수행 되기 때문에 빠르고 안전하다.
- --coverage 옵션을 사용하면 테스트 코드가 아닌 프로젝트 코드를 포함한 코드 커버리지 정보를 출력할 수 있다.
- 쉽게 Mock Function을 선언할 수 있다.
- Babel과 연계해서 테스트 작업을 수행할 수 있다.
3) 사용 방법
- 테스트 함수 선언
const sum = require('./sum');
test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});
- 테스트 실행
> jest
2. Mocha
1) 개요
- Node.js 및 브라우저에서 작동하는 자바스크립트 테스트 프레임워크
- Official: https://mochajs.org/#running-mocha-in-the-browser
2) 특징
- 비동기 방식의 테스트를 간단하게 생성 가능
- 브라우저상에서 시각화해서 사용할 수 있다.
- 자체적으로 Assertion을 지원하지 않기 때문에 Assertion 라이브러리와 함께 사용해야 함
- 주로 Mocha와 Chai를 결합해서 사용
3) 사용 방법
- 테스트 함수 선언
// EX1
const assert = require('assert');
describe('Array', function() {
describe('#indexOf()', function() {
it('should return -1 when the value is not present', function() {
assert.equal([1, 2, 3].indexOf(4), -1);
});
});
});
// EX2
describe('Array', function() {
describe('#indexOf()', function() {
it('should return -1 when the value is not present', function() {
[1, 2, 3].indexOf(5).should.equal(-1);
[1, 2, 3].indexOf(0).should.equal(-1);
});
});
});
// EX3
beforeEach(async function() {
await db.clear();
await db.save([tobi, loki, jane]);
});
describe('#find()', function() {
it('responds with matching records', async function() {
const users = await db.find({type: 'User'});
users.should.have.length(3);
});
});
- 테스트 실행
> mocha
- Hooks
describe('hooks', function() {
before(function() {
// 블록 범위 내 모든 테스트 전에 실행
});
after(function() {
// 블록 범위 내 모든 테스트 후에 실행
});
beforeEach(function() {
// 블록 범위 내 각 테스트 직전에 실행
});
afterEach(function() {
// 블록 범위 내 각 테스트 직후에 실행
});
// test cases
});
4) Chai
- BDD / TDD Assertion Library
- Official: https://www.chaijs.com/
- Mocha에 종속된 라이브러리는 아니지만 Mocha에 Assertion Libarary가 제공되지 않아서 함께 첨부
- 사용 방법
// Should
chai.should();
foo.should.be.a('string');
foo.should.equal('bar');
foo.should.have.lengthOf(3);
tea.should.have.property('flavors')
.with.lengthOf(3);
// Expect
var expect = chai.expect;
expect(foo).to.be.a('string');
expect(foo).to.equal('bar');
expect(foo).to.have.lengthOf(3);
expect(tea).to.have.property('flavors')
.with.lengthOf(3);
// Assert
var assert = chai.assert;
assert.typeOf(foo, 'string');
assert.equal(foo, 'bar');
assert.lengthOf(foo, 3)
assert.property(tea, 'flavors');
assert.lengthOf(tea.flavors, 3);
3. Jasmine
1) 개요
- 행동 주도를 지향하는 자바스크립트 테스트 프레임워크
- Official: https://jasmine.github.io/index.html
2) 특징
- Karma와의 연동을 통해 브라우저 시각화 가능(앵귤러 기본 스펙)
3) 사용 방법
- 테스트 함수 선언
describe("A suite is just a function", function() {
var a;
it("and so is a spec", function() {
a = true;
expect(a).toBe(true);
});
});
- 테스트 실행
> Jasmine
4) Karma
- Productive 테스트 환경 제공
- Official: https://karma-runner.github.io
- 브라우저 혹은 디바이스에서 테스트 가능
- Jasmine, Mocha, Qunit 등 다양한 테스트 프레임워크 함께 사용 가능
- 웹스톰 혹은 크롬과 함께 쉬운 디버깅 가능
- 사용 방법
// 초기화 및 연동할 테스트 프레임워크 설정(설정 파일 자동 생성)
> node_modules/.bin/karma init
// 테스트 실행
> node_modules/.bin/karma start
4. 총 평
1) 총 평
- 전부 사용해본 결과 많은 테스트 프레임워크가 있지만 사용 방법은 모두 비슷하다.
- 연계 라이브러리와 호환성이 좋은 테스트 프레임워크를 선택하는게 좋다.
'프로그래밍 > Node.js' 카테고리의 다른 글
[Node.js] Nodemon이란? (0) | 2019.07.06 |
---|---|
[Node.js] Forever 란? (0) | 2019.07.06 |
[Node.js 요약 정리] 3. Node 내장 객체와 내장 모듈 (0) | 2019.06.14 |
[Node.js 요약 정리] 2. Node.js를 위한 기본 자바 스크립트 (0) | 2019.02.10 |
[Node.js 요약 정리] 1. Node.js 개요 (0) | 2019.02.10 |