본문 바로가기
Programming

Mocha Chai framework for testing install

by 개발자 염상진 2022. 8. 20.

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

 

 

 

 

플로이드 워셜 알고리즘 (Floyd-Warshall Algorithm) Node.js

플로이드 알고리즘이란? 플로이드 워셜 알고리즘은 그래프 상에서 가능한 모든 경로의 최단거리를 뽑아내는 문제입니다. 플로이드 워셜 알고리즘의 시간복잡도는 O(V^3)입니다. 그래프 상에서

about-tech.tistory.com

 

 

[Blockchain] 탈중앙화 신원증명 DID 컨트랙트 개발

DID는 중앙화된 신뢰기관 없이 블록체인 혹은 분산원장 기술을 통해 데이터의 소유자가 자격증명을 처리할 수 있는 기술입니다. DID는 DID Document에 공개키를 등록하고 Issuer에게 VC를 받아 VP를 Verif

about-tech.tistory.com

 

 

컴퓨터 구조 (폰 노이만 아키텍처, 프로세서, 주기억 장치, 버스)

현재 우리가 사용하고 있는 컴퓨터는 IBM사에서 1981년 처음 판매한 IBM PC와 거의 유사한 형태를 가지고 있습니다. 30년이 지난 시점에도 기본적인 컴퓨터의 구조는 계속 이어져 오고 있습니다. 마

about-tech.tistory.com

 

댓글