Mocha는 Javascript에서 유닛 테스트를 위한 테스트 프레임워크 입니다.
프로덕션 개발을 진행하는 경우 유닛 테스트 => 통합테스트 -> 시스템 테스트 -> 인수 테스트 순서로 테스팅을 진행하게 되는데, 개발자 입장에서 가장 많이 겪게 되는 테스팅이 바로 유닛 테스트와 통합테스트 입니다.
TDD가 일반 프로그램 개발에서도 중요하지만, 블록체인에 올릴 컨트랙트 개발에 있어서 유닛 테스트는 필수입니다. 한번 컨트랙트가 배포되고 난 뒤 코드를 수정할 수 없기 때문입니다.
유닛 테스트는 코딩이 완료된 후 최소 단위의 유닛인 함수나 프로시저를 가지고 테스트를 진행하게 됩니다.
Mocha 프레임워크 사용
1. 설치방법
Node.js 프로젝트를 실행한 후 npm init으로 초기화를 진행합니다. 테스팅을 위해 mocha를 설치합니다.
npm instal -d mocha
package.json 파일에 test 부분을 mocha로 변경해줍니다.
"scripts": {
"test": "mocha"
}
2. 테스트 코드작성
var 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);
});
});
});
3. 테스트 실행
npm run test
chai 테스트 라이브러리
mocha를 통해 테스트를 진행하는 경우 더 풍부한 라이브러리를 사용할 수 있도록 해주는 녀석이 바로 'chai'입니다. expect, assert, should 등의 구문을 가지고 있고, 테스팅 시나리오를 더 풍부하게 사용할 수 있습니다.
1. 설치
$ npm install chai
2. 사용
assert
var assert = require('chai').assert
assert.typeOf(foo, 'string'); // without optional message
assert.typeOf(foo, 'string', 'foo is a string'); // with optional message
assert.equal(foo, 'bar', 'foo equal `bar`');
assert.lengthOf(foo, 3, 'foo`s value has a length of 3');
assert.lengthOf(beverages.tea, 3, 'beverages has 3 types of tea');
expect
var expect = require('chai').expect
, foo = 'bar'
, beverages = { tea: [ 'chai', 'matcha', 'oolong' ] };
expect(foo).to.be.a('string');
expect(foo).to.equal('bar');
expect(foo).to.have.lengthOf(3);
expect(beverages).to.have.property('tea').with.lengthOf(3);
should
var should = require('chai').should() //actually call the function
, foo = 'bar'
, beverages = { tea: [ 'chai', 'matcha', 'oolong' ] };
foo.should.be.a('string');
foo.should.equal('bar');
foo.should.have.lengthOf(3);
beverages.should.have.property('tea').with.lengthOf(3);
Reference
'Programming' 카테고리의 다른 글
Node.js crypto 비대칭키 대칭키 구현하기 (0) | 2022.09.02 |
---|---|
Node.js cookie 사용법 (로그인에 쿠키를 사용하면 안되는 이유) (1) | 2022.08.27 |
[IPFS] Infura IPFS deprecated, NFT storage 사용법 (0) | 2022.08.17 |
[에러 해결] Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. (1) | 2022.08.16 |
[Git] 되돌리기 명령어 (restore, reset, clean 사용법) (3) | 2022.08.14 |
댓글