Mocha를 이용해 Javascript 테스트 해보기
IntelliJ Ultimate edition에서만 지원한다고 한다.
IntelliJ terminal에서 npm install -g mocha
입력
- npm install mocha //local installation in project
- npm install -g mocha //global installation
test.js
생성
1 2 3 4 5 6 7 | var assert = require('assert'); describe('#Hello World!', function () { it('입력 값은 Hello World!', function () { var input = 'Hello World!'; // 입력 값이라고 가정 assert.equal('Hello World!', input); }); }); | cs |
terminal에서 mocha test.js
Mocha에서 사용 가능한 Assertion
은
- Should.js
- expect.js
- Chai
- better-assert
- unexpected
이렇게 총 5종류인데 거의 Chai와 같이 사용된다고 하니 Chai를 사용하려고 한다.
Chai는 should, Expect, Assert와 같은 인터페이스를 지원한다고 한다. 아직 감이 잘 안와서 예제를 통해 이해해보려고 한다.
terminal에서 npm i chai --save-dev
Chai expect test
testChai.js
생성
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | var chai = require('chai'); var expect = chai.expect; var assert = chai.assert; var should = chai.should(); describe('#Expect Test', function () { it('expect - Array', function () { var arr = [1, 2, 5, 3, 4]; expect(arr).to.have.lengthOf(5); //array length expect(arr).to.be.not.empty; //empty expect(arr).to.have.ordered.members([1, 2, 5, 3, 4]); //arr === members }); }); it('expect - String', function () { var str = 'Awesome!!'; expect(str).to.be.a('String'); //str type expect(str).to.equal('Awesome!!'); //str === 'Awesome!!' expect(str).to.have.lengthOf(7, 'Why fail?'); //Error }); it('expect - Object', function () { var obj = { assertion: ['assert', 'expect', 'should'], framework: 'mocha' }; expect(obj).to.have.property('assertion').with.lengthOf(3); //assertion value length expect(obj).to.have.all.keys('framework', 'assertion'); //obj key === keys }); | cs |
terminal에서 mocha testchai.js
expect
는 임의의 실패한 assertion
앞에 메시지를 포함할 수 있다. 신기하다.
expect
와 should
는 체이닝 방식을 사용한다고 한다.
- to
- be
- been
- that
- which
- and
- has
- have
- with
- at
- of
- same
- but
- does
Chai should test
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | var chai = require('chai'); var expect = chai.expect; var assert = chai.assert; var should = chai.should(); describe('#Should Test', function () { it('should - Array', function () { var arr = [1, 2, 5, 3, 4]; arr.should.have.lengthOf(5); //array length arr.should.be.not.empty; //empty arr.should.have.ordered.members([1, 2, 5, 3, 4]); //arr === members }); it('should - String', function () { var str = 'Awesome!!'; str.should.be.a('String'); //str type str.should.equal('Awesome!!'); //str === 'Awesome!!' str.should.have.lengthOf(7, 'Why fail?'); //Error }); it('should - Object', function () { var obj = { assertion: ['assert', 'expect', 'should'], framework: 'mocha' }; obj.should.have.property('assertion').with.lengthOf(3); //assertion value length obj.should.have.all.keys('framework', 'assertion'); //obj key === keys }); }); | cs |
이렇게 코드를 짜고 test를 돌려보면 결과는 expect
와 같은데 expect
와 should
의 다른점은
1 2 | var expect = chai.expect; var should = chai.should(); | cs |
- expect - 함수에 대한 참조
- should - 함수 실행
Chai assert test
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | var chai = require('chai'); var expect = chai.expect; var assert = chai.assert; var should = chai.should(); describe('#Assert Test', function () { it('assert - Array', function () { var str = 'Awesome!!'; var obj = { assertion: ['assert', 'expect', 'should'], framework: 'mocha' }; assert.equal(str, 'Awesome!!'); //str === 'Awesome!!' assert.typeOf(str, 'String'); //str type assert.lengthOf(obj.assertion, 3); //assertion value length }); }); | cs |
실행 결과
나는 아직 체이닝 방식에 익숙하지는 않아서 Assert
를 자주 이용할 것 같다.
https://kdydesign.github.io
아직 자바스크립트, test에 대해서 지식이 얕아서 참고를 정말 많이했다 감사합니다 :)
코딩 테스트를 본 이후로 자바스크립트 공부를 메인으로 하기로 마음먹었다. 첫 스타트이다.
'Javasctript' 카테고리의 다른 글
ES6 모듈 시스템 (0) | 2021.02.28 |
---|---|
npm 관련 error solve (0) | 2019.10.23 |
[level 1] Collatz 추측 (4) | 2019.03.16 |
[codility] CyclicRotation (0) | 2019.03.14 |
[codility] BinaryGap (0) | 2019.03.13 |