Backend 언어/JS&TS
[jest] expect를 정리해보자
민초부
2021. 4. 24. 17:37
- TDD의 핵심 expect에 대해서 얼마나 다양하게 많은지, 각각의 함수에 대해 어떤 상황이 적합한지 정리해보자
- expect().toBe() : 인스턴스 비교를 할 때보단 값을 비교할 때 사용하는 것이 더 적합하다. 인스턴스를 인스턴스 내부의 property값들이 전부 같은지 비교하기 위해 toBe를 쓰게 된다면 서로 다른 객체라고 결과를 내보냄
- expect().toEqual() : 인스턴스 값들을 체크하고자 한다면 toEqual이 적합하다
test('dummy test', () => {
const data = {id : 3};
data['content'] = 'test case';
expect(data).toEqual({id: 3, content: 'test case'});
})
- expect().toBeNull() : toBe(null)과 결과는 동일하지만 아닐 때 에러메시지가 좀 더 구체적이고 직관적이다.
- expect().toBeTruthy() : toBeNull과 동일, 이건 boolean 체크용
- expect().toHaveLength(number) : 해당 객체에 .length 속성이 있을 때 특정 값이랑 일치하는지 확인
- expect().toHaveProperty(keyPath, value?) : 해당 객체 안에 keyPath값의 property가 존재하는지 테스트할 때 확인. 여기서 존재하는 것 뿐만이 아니라 그 해당 property의 값까지 비교하고 싶으면 value안에 값을 넣어주면 됨.
- expect.objectContaining(object): toHavaProperty랑 비슷하긴 한데 object를 넣어주고 해당 object들의 property가 test하고자 하는 객체 안에 포함되는지를 확인하는 거
- expect().toBeCalled() : 모킹된 함수가 몇번이 호출되었는지 카운트해서 확인