테스트하는 값과 기대값을 비교하기 위해 expect 함수를 사용할 수 있다.
설치 후
npm i chai --save-dev
require로 모듈을 가져다가 사용하면 된다.
const { expect } = require('chai');
chai는 다음과 같은 chain들을 제공하여 코드의 가독성을 높이고
좀 더 직관적으로 테스트를 작성할 수 있게 도와준다.
to
be
been
is
that
which
and
has
have
with
at
of
same
but
does
still
'기대하는 조건'에 해당하는 함수를 matcher라고 한다.
'참인 것이어야 한다' => to.be.true
'3과 같아야 한다' => to.equal(3)
(오브젝트인 경우에는 to.deep을 사용한다.)
expect(테스트하는값).기대하는조건
expect(isEven(3)).to.be.true => isEven(3)'의 결과값은 참(true)이어야 한다.
expect(1 + 2).to.equal(3) => sum(1, 2)의 결과값은 3과 같아야(equal) 한다.
expect([1, 2]).to.deep.equal([1, 2]) => [1, 2]의 결과값은 [1, 2]와 같아야 한다.
equal
: 가장 많이 사용. 실제로 반환되는 값과 예측 값이 동일한지 검증
not.equal
: 같지 않음을 검증
deep.equal
: 실제로 반환되는 오브젝트 값과 예측 오브젝트 값이 동일한지 검증
above
: 초과
least
: 이상
below
: 미만
most
: 이하
within
: 범위 (ex. to.within(2, 5) => 2과 5사이의 값)
lengthOf
: length 비교
key
: object의 key들을 비교
any.key
: 어느 하나의 값이라도 key를 가지면 통과
include
: array에 어떤 값이 포함되어 있는지 검증
deep.include
: 오브젝트에 어떤 값이 포함되어 있는지 검증
a
: type을 검증
an
: type을 검증
throw
: 에러가 발생했는지에 대해 검증
function sum(...nums) {
let sum = 0;
for (let i = 0; i < nums.length; i++) {
sum = sum + nums[i];
}
return sum;
}
expect(sum(1, 2, 3)).to.equal(6);
expect(sum(1, 2, 3, 4)).to.equal(10);