Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 30 | 31 |
Tags
- 티스토리꾸미기
- const 단언문
- TSDoc
- CSS
- javascript
- JS console
- returnType
- 반복줄이기
- 성능최적화
- React.js
- 타입좁히기
- vue.js
- 폰트적용하기
- NonNullable
- typescript
- reactjs
- React Native
- utilty type
- 공통컴포넌트
- 타입스크립트
- 누구나 자료구조와 알고리즘
- click and drag
- react
- 레이아웃쪼개기
- 2022
- 제네릭
- 커스텀
- 개발콘텐츠
- Chart.js
- 리액트
Archives
- Today
- Total
몽땅뚝딱 개발자
[Mocha] 테스팅 라이브러리 with. 모카(Mocha), chai - (2) 문법 본문
📄 예제 코드
expect를 사용해본다.
import {expect} from "chai";
import {substringsBetween} from "../script/chapter2";
describe('chapter2', () => {
it('T1: null', () => {
expect(substringsBetween(null, 'a', 'b'))
.to.equal(null)
})
assert 단언문을 사용해본다.
import {indexOf} from "../script/chapter5";
const assert = require('assert')
describe('chapter5. 속성 기반 테스트 - 예제 3', () => {
it('T1: array가 널인 경우', () => {
assert.deepEqual(indexOf(null, 3, 1), -1)
});
it('T2: array의 요소가 하나이고, array에 valueToFind가 있는 경우', () => {
assert.deepEqual(indexOf([3], 3, 0), 0)
});
it('T3: array의 요소가 하나이고, array에 valueToFind가 없는 경우', () => {
assert.deepEqual(indexOf([3], 2, 0), -1)
});
it('T4: startIndex가 음수이고, array에 값이 있는 경우', () => {
assert.deepEqual(indexOf([1, 3, 5, 3, 5], 3, -1), 1)
});
})
💡 Tip
$ npm i should
const should = require('should');
const should = require('chai').should(); // chai로 이렇게 쓸 수도 있다.
should.equal(str, 'foo')는 assert.equal(str, 'foo')와 똑같이 동작한다. 쓰는 방식에 차이가 있다.
◽️ chai에서 제공하는 chain
문장으로 매끄럽게 연결하며 코드의 가독성을 높일 때 사용한다.
- to
- be
- been
- is
- that
- which
- and
- has
- have
- with
- at
- of
- same
- but
- does
- still
◽️ equal
얕은 비교를 할 때 사용한다. type까지 비교하므로 연산(===)과 같다.
not을 붙일 수도 있다.
import {passed} from "../script/chapter5";
const assert = require('assert')
describe('chapter5. 속성 기반 테스트 - 예제 1', () => {
it('fail 속성에 관한 테스트', () => {
assert.equal(passed(1.0), false)
});
it('pass 속성에 관한 테스트', () => {
assert.not.equal(passed(6.5), true)
});
it('invalid 속성에 관한 테스트', () => {
assert.equal(passed(0.1), undefined)
});
})
◽️ deepEqual
깊은 비교를 할 때 사용한다.
import {unique} from "../script/chapter5";
const assert = require('assert')
describe('chapter5. 속성 기반 테스트 - 예제 2', () => {
it('테스트', () => {
assert.deepEqual(unique([1, 3, 6, 3]), [1, 3, 6])
});
})
◽️ 값의 비교
- above: 초과
- least: 이상
- below: 미만
- most: 이하
- within: 범위
import {expect} from "chai";
describe('test', () => {
const arr = [1, 2, 3, 4];
it("above", () => {
expect(Math.max(...arr)).to.above(3);
});
it("least", () => {
expect(Math.max(...arr)).to.least(4);
});
it("below", () => {
expect(Math.min(...arr)).to.below(2);
});
it("most", () => {
expect(Math.min(...arr)).to.most(1);
});
it("within", () => {
expect(arr.length).to.within(3, 5);
});
});
◽️ ownProperty
검사할 객체가 해당 속성을 갖고있는지 검사한다.
describe('test', () => {
it('ownProperty', function () {
({ foo: 'bar' }).should.have.ownProperty('foo')
});
});
◽️ NaN
const returnNaN = (value: any) => {
return value - 3
}
describe('test', () => {
it('throw', function () {
expect(returnNaN('a')).to.NaN;
});
});
◽️ a
객체의 typeOf를 검사한다.
describe('test', () => {
it('a', function () {
'test'.should.be.a('string')
});
});
◽️ throw
const throwError = () => {
throw new Error('fail');
}
describe('test', () => {
it('throw', function () {
expect(throwError).to.throw()
});
it('throw: 에러타입+메세지 검사', function () {
expect(throwError).to.throw('fail')
});
it('throw: 에러타입 검사', function () {
expect(throwError).to.throw(Error, 'fail')
// expect(() => throwError()).to.throw(Error, 'fail') // 또는
});
});
출처
https://heropy.blog/2018/03/16/mocha/
https://blog.outsider.ne.kr/774
'Development > 환경설정' 카테고리의 다른 글
[AWS] S3 CORS와 캐시 무효화 처리했던 방법들 정리 (0) | 2023.12.29 |
---|---|
[Allow CORS: Access-Control-Allow-Origin] cors 임시 우회 확장프로그램 (0) | 2023.12.20 |
Gitmoji를 사용한 commit 쪼개기 (0) | 2023.05.14 |
[Mocha] 테스팅 라이브러리 with. 모카(Mocha), chai - (1) 시작 (0) | 2023.04.24 |
[IntelliJ] Postfix Completion 예제 및 적용하기 (0) | 2023.03.13 |
Comments