타입스크립트로 개발하는 과정에서 단위 테스트는 매우 중요합니다. 테스트 주도 개발 방법론을 따른다면, 모듈(Mock)을 활용하여 코드의 독립성을 보장하는 테스트를 작성할 수 있습니다. 이번 포스트에서는 타입스크립트에서 모듈(Mock)을 활용한 단위 테스트의 방법을 알아보겠습니다.
모듈(Mock)이란?
많은 경우에 개발 중에 특정 모듈이나 외부 의존성을 모의(Mock)로 대체해야 합니다. 이를 통해 외부 시스템과의 결합도를 낮추고 테스트를 더욱 효율적으로 진행할 수 있습니다. 모듈(Mock)을 사용하면 테스트 시 특정 동작이 실행되도록 강제할 수 있으며, 호출되는 함수의 반환 값을 조작할 수도 있습니다.
타입스크립트에서의 모듈(Mock) 활용
1. jest.mock 함수 활용
jest는 JavaScript를 위한 테스트 프레임워크로, 타입스크립트 프로젝트에서도 잘 동작합니다. jest는 jest.mock
함수를 제공하여 모듈(Mock)을 손쉽게 생성하고 주입할 수 있습니다.
예를 들어, 다음은 특정 모듈의 함수를 Mocking하는 예제입니다.
import SomeModule from './SomeModule';
jest.mock('./SomeModule', () => ({
someFunction: jest.fn(() => 'mocked value')
}));
// ...테스트 수행
위 코드에서 jest.mock
을 사용하여 SomeModule
의 someFunction
을 Mocking했습니다. 이제 SomeModule
을 사용하는 코드에서 실제 함수가 아닌 Mock 함수가 호출됩니다.
2. sinon 라이브러리 활용
sinon은 JavaScript에서 모의, 스파이, 스텁과 같은 행위 기반 테스트를 위한 라이브러리입니다. 타입스크립트에서도 사용이 가능하며, jest와 함께 사용할 수 있습니다.
import * as sinon from 'sinon';
import { expect } from 'chai';
import SomeModule from './SomeModule';
describe('SomeModule', () => {
it('should return mocked value', () => {
const mock = sinon.stub(SomeModule, 'someFunction').returns('mocked value');
// ...테스트 수행
mock.restore();
});
});
위 코드에서는 sinon.stub
을 사용하여 SomeModule
의 someFunction
을 Mocking하고, 테스트 후에는 복원해줍니다.
결론
타입스크립트에서의 모듈(Mock)을 적극적으로 활용하여 단위 테스트를 작성하면 코드의 독립성 및 안정성을 높일 수 있습니다. jest나 sinon과 같은 테스트 라이브러리를 적절히 활용하여 모듈(Mock)을 사용하면, 코드의 품질을 유지하면서 안정적인 소프트웨어를 개발할 수 있습니다.