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() : 모킹된 함수가 몇번이 호출되었는지 카운트해서 확인
반응형