[typescript] 타입스크립트 단위 테스트 작성 시 고려해야 할 사항
타입스크립트는 정적 타입을 제공하므로 단위 테스트 작성 시 몇 가지 고려 사항이 있습니다. 이 포스트에서는 타입스크립트 단위 테스트를 작성할 때 주의해야 할 사항에 대해 살펴보겠습니다.
타입 안정성
타입스크립트는 강력한 타입 시스템을 가지고 있어 코드의 안정성을 높여줍니다. 따라서 단위 테스트를 작성할 때 타입 안정성을 유지하는 것이 중요합니다. 특히 함수의 인자와 반환 값의 타입을 정확히 명시하여 타입 에러를 방지하는 것이 필요합니다.
예를 들어, 다음은 add
함수의 타입 안정성을 유지하는 예시입니다.
function add(a: number, b: number): number {
return a + b;
}
test('add should return the sum of two numbers', () => {
expect(add(1, 2)).toBe(3);
});
Mocking
타입스크립트에서 단위 테스트를 작성할 때 외부 의존성을 가진 모듈이나 함수를 모킹(mocking)하는 것이 중요합니다. 특히 외부 API 호출이나 파일 시스템 접근과 같이 외부 환경에 의존하는 코드의 경우, 모킹을 통해 외부 의존성을 제어할 수 있습니다.
import axios from 'axios';
function fetchData(url: string) {
return axios.get(url);
}
test('fetchData should return the data from the API', async () => {
// 모킹을 사용하여 axios.get을 대체
jest.spyOn(axios, 'get').mockResolvedValue({ data: 'mocked data' });
const data = await fetchData('https://example.com/api');
expect(data).toEqual('mocked data');
});
ASYNC/AWAIT 사용
타입스크립트에서는 비동기 코드의 단위 테스트를 작성할 때 ASYNC/AWAIT를 사용하여 비동기 작업이 완료될 때까지 기다리는 것이 중요합니다. 이를 통해 테스트의 안정성을 높일 수 있습니다.
async function fetchData(url: string) {
const response = await fetch(url);
const data = await response.json();
return data;
}
test('fetchData should return the data from the API', async () => {
const data = await fetchData('https://example.com/api');
expect(data).toEqual('expected data');
});
결론
타입스크립트로 작성된 코드의 단위 테스트를 작성할 때는 타입 안정성 유지, 모킹 활용, ASYNC/AWAIT 활용 등을 고려해야 합니다. 이를 통해 안정적이고 신뢰할 수 있는 코드를 유지할 수 있습니다.
참고 자료: