React 104.02 _ Matcher

suineGy zaL·2022년 10월 13일
0

React

목록 보기
6/9

앞서 toBe 라는 Matcher를 사용해 테스트코드를 작성했다.
외에도 자주사용하는 Matcher 몇 개를 테스트 해보려 한다.


toEqual

  • 오브젝트를 비교할 때 사용하는 Matcher
  • index.js에 추가해 준다
const person = (name, age) =>{
    return {
        name,
        age,
    };
};

module.exports = {
    person,
};
  • person 함수는 nameage 매개변수를 전달받아 person 오브젝트를 반환하는 함수이다
  • indes.test.js 파일에 추가한다.
const {..., person} = require('./index');

describe('test index.js file', () => {
  ...
  it('makes a person', () =>{
        expect(person('Kim',20)).toEqual({
            name : 'Kim',
            age:20,
        });
    });
});
  • 자바스크립트에서는 오브젝트의 내용이 같아도 다른 값으로 인식한다. 따라서 단순히 person함수를 통해 생성한 값과 toEqual에서 사용한 값을 단순비교(===)하면 다른 값이라고 판단한다.
  • 이런 문제 때문에 Jest 에서 오브젝트를 테스트 할 때는 toEqual을 사용해 테스트한다.
  • 만약 이곳에 toBe를 사용하면 에러가 발생한다.
  • 이렇게 파일을 수정하면 역시 자동으로 테스트가 된다.

toBeTruthy, toBeFalsy

  • toBeTruthytoBeFalsy는 참, 거짓 값(Boolean)을 쳌할 때 사용하는 Matcher이다.
    index.js
const toggle = (a) =>{
    return !a;
};

module.exports = {
    ...
    toggle,
};
  • toggle함수는 전달받은 매개변수의 반대값을 반환하는 함수이다.
    index.test.js
const {... , toggle} = require('./index');

describe('test index.js file', () => {
    ...
    it('returns false', () => {
        expect(toggle(true)).toBeFalsy();
        expect(toggle(true)).not.toBeTruthy();
    });
});
  • 만든 toggle 함수에 참값을 매개변수로 전달했고, 결과 값으로 예상하는 값인 거짓값을 확인하기 위해 toBeFalsy를 사용했다. nottoBeTruthy를 사용해 참이 아님을 확인했다

toContain

  • Jest에서는 배열(Array)에 특정값이 포함되어 있는지 확인할 때 toCaontain을 사용한다.
    index.js
const range = (start, end) => {
    let result =[];
    for (let i = start; i <= end; i++){
        result.push(i);
    }
    return result;
}
module.exports = {
    ...
    range,
};
  • range 함수는 배열에 시작과 끝값을 전달받아서 배열을 만들어 반환하는 함수이다.
    index.test.js
const {range} = require('./index');

it('has 2', () => {
        expect(range(1, 3)).toContain(2);
    });
  • toContain을 사용해 1로 시작해 3으로 끝나는 배열에 2가 포함되어 있는지 확인하는 테스트 코드

이밖에도 Jest에는 많은 Mathcer가 존재한다
https://jestjs.io/docs/expect

profile
숲으로

0개의 댓글