다른 도구(ex. 스토리북)를 통해 검증
상위 컴포넌트의 통합 테스트에서 검증
상태에 따라 컴포넌트들이 조합 되었을 때 어떻게 동작하는지까지 검증되어야 좋은 테스트
큰 범위의 통합 테스트로 상태에 따른 동작을 검증하는 게 더 효율적이고 정확한 테스트
내비게이션 바 안에서 어떻게 동작하는지
> 간단한 컴포넌트 (ex. 로그인 버튼, 장바구니 버튼 등)의 단위 테스트를 일일이 작성
• 다른 모듈과의 의존성 無
• 여러 곳에서 사용되기 때문에 검증을 통해 안정성을 높임
유틸 함수 단위 테스트 예시
pick 함수의 기능
export const pick = (obj, ...propNames) => {
if (!obj || !propNames) {
return {};
}
return Object.keys(obj).reduce((acc, key) => {
if (propNames.includes(key)) {
acc[key] = obj[key];
}
return acc;
}, {});
};
import { pick, debounce } from './common';
describe('pick util 단위테스트', () => {
it('단일 인자로 전달된 키의 값을 객체에 담아 반환한다', () => {
const obj = {
a: 'A',
b: { c: 'C' },
d: null,
};
expect(pick(obj, 'a')).toEqual({ a: 'A' });
});
it('2개 이상의 인자로 전달된 키의 값을 객체에 담아 반환한다', () => {
const obj = {
a: 'A',
b: { c: 'C' },
d: null,
};
expect(pick(obj, 'a', 'b')).toEqual({ a: 'A', b: { c: 'C' } });
});
it('대상 객체로 아무 것도 전달 하지 않을 경우 빈 객체가 반환된다', () => {
expect(pick()).toEqual({});
});
it('propNames를 지정하지 않을 경우 빈 객체가 반환된다', () => {
const obj = {
a: 'A',
b: { c: 'C' },
d: null,
};
expect(pick(obj)).toEqual({});
});
});
toEqual
매처를 사용하여 pick 함수를 실행했을 때의 기대 결과와 실제 결과가 같은지 단언출처