[javascript] Jest에서의 테스트 더블(Test double) 활용 방법은 어떻게 되는가?

Jest는 JavaScript 프로젝트를 테스트하기 위한 강력하고 유연한 도구입니다. 테스트 더블(Test Double)은 실제 의존성을 대신하여 테스트 환경을 격리하여 테스트를 더욱 쉽게 만들어주는 기법입니다. 이를 통해 테스트의 신뢰성을 확보할 수 있습니다.

테스트 더블(Test Double)이란?

테스트 더블(Test Double)은 실제 의존성을 대체하는 객체로, 다음과 같은 형태로 사용됩니다.

Jest에서의 테스트 더블 활용 방법

Jest에서는 테스트 더블을 만들고 사용하는 다양한 방법을 제공합니다.

Stub 사용하기

const myFunction = jest.fn().mockReturnValue(42);

console.log(myFunction()); // 42

위의 예제에서는 myFunction을 스텁으로 사용하여 호출될 때 항상 42를 반환하도록 설정했습니다.

Spy 사용하기

const myFunction = jest.fn();

myFunction(1, 2, 3);
myFunction('hello');

console.log(myFunction.mock.calls); // [[1, 2, 3], ['hello']]
console.log(myFunction.mock.calls.length); // 2

위의 예제에서는 myFunction을 스파이로 사용하여 호출 여부와 매개변수를 기록하였습니다.

Mock 사용하기

const myFunction = jest.fn();
myFunction.mockImplementation(() => 'mocked value');

console.log(myFunction()); // 'mocked value'

위의 예제에서는 myFunction을 목(Mock)으로 사용하여 호출될 때 ‘mocked value’를 반환하도록 설정하였습니다.

주의사항

결론

Jest에서는 테스트 더블을 통해 의존성을 대체하여 테스트 환경을 격리하고, 테스트를 더욱 쉽게 작성할 수 있습니다. Stub, Spy, Mock 등 여러가지 테스트 더블을 활용하는 방법을 익혀서 테스트의 신뢰성을 확보하는 것이 중요합니다.

참고 자료: