회사 프로젝트에 숫자 금액을 텍스트로 환산하거나, 숫자를 텍스트로 처리하는 유틸 함수가 있는데,
간혹 경우의 수가 있다보니 예상치 못한 매개변수가 넘어오면 NaN(Not A Number) 혹은 공백 상태로 에러 처리를 못하는 경우가 종종 발생한다.
그러한 문제를 미리 해결하고자 npx 웹팩을 통해 React를 설치할 경우 탑재된 jest 를 활용하여 유닛 테스트를 진행하고자 한다.
수량 텍스트 처리 함수(countUnit) jest 유닛 테스트
test.each`
source | expected
${1030} | ${"1천"}
${2670} | ${"2천"}
${55670} | ${"5만"}
${8500670} | ${"850만"}
${10500670} | ${"1050만"}
${410500670} | ${"4억"}
${730010500670} | ${"7300억"}
`("숫자 값의 문자 단위 처리", ({ source, expected }) => {
const result = countUnit(source);
expect(result).toBe(expected);
});
여기서 jest 메서드인 each를 사용하면 중복된 코드를 간략화하여 처리할 수 있다.(DB 쿼리문 템플릿 문법과 비슷하다.)
숫자 금액 텍스트 처리 함수(moneyUnit) jest 유닛 테스트
test.each`
source | expected
${0} | ${null}
${1030} | ${"1,030원"}
${31300} | ${"31,300원"}
${670300} | ${"670,300원"}
${2356300} | ${"2,356,300원"}
${82300000} | ${"8천만원"}
${102300000} | ${"1.0억원"}
${4523050000} | ${"45.2억원"}
${20523050000} | ${"205억원"}
${505230500000} | ${"5,052억원"}
`("숫자 값의 원(문자) 단위 처리", ({ source, expected }) => {
const result = moneyUnit_NotSpan(source);
expect(result).toBe(expected);
});
Wh 단위 처리 함수(capacityUnit) jest 유닛 테스트
test.each`
source | expected
${0} | ${" kWh"}
${1} | ${" MWh"}
${10} | ${" MWh"}
${100} | ${" MWh"}
${10000} | ${" GWh"}
`("숫자 값의 와트/시간 단위 처리", ({ source, expected }) => {
const value = capacityUnit(source);
const result = value.props.children[1].props.children;
expect(result).toBe(expected);
});