[javascript] Jest에서의 모의(Mock) 객체 활용 방법은 어떻게 되는가?

Jest는 JavaScript를 위한 인기 있는 테스트 프레임워크입니다. Jest를 사용하여 모의 객체(Mock)를 생성하고 사용할 수 있습니다. 모의 객체는 실제 객체와 비슷하게 동작하지만, 우리가 정의한 방식으로 동작하도록 제어할 수 있습니다. 이를 통해 테스트 중에 다른 객체와의 상호작용을 시뮬레이션할 수 있습니다.

모의 객체를 생성하기 위해 jest.fn() 함수를 사용합니다. 이 함수는 새로운 모의 함수를 생성합니다. 모의 함수는 실제 함수와 같은 방식으로 호출되고 리턴되지만, 우리가 정의한 방식에 따라 동작합니다.

// 모의 함수 생성
const mockFunc = jest.fn();

// 모의 함수 사용
mockFunc(1, 2);
mockFunc('hello');

// 검증
expect(mockFunc).toBeCalled(); // 모의 함수가 호출되었는지 검증
expect(mockFunc).toBeCalledTimes(2); // 모의 함수가 2번 호출되었는지 검증
expect(mockFunc).toBeCalledWith(1, 2); // 모의 함수가 1과 2라는 인자로 호출되었는지 검증

위의 예제에서는 jest.fn() 함수를 사용하여 mockFunc라는 모의 함수를 생성하였습니다. 그리고 mockFunc를 호출하고, 호출된 횟수와 호출된 인자들을 검증하는 예제입니다.

또한, 모의 객체를 사용하여 특정 메소드의 리턴 값을 지정할 수도 있습니다. 이를 통해 다양한 시나리오를 테스트할 수 있습니다.

// 모의 객체 생성
const mockObj = {
  sum: jest.fn()
};

// sum 메소드에 대한 동작 정의
mockObj.sum.mockReturnValue(10); // sum 메소드가 호출되었을 때 리턴할 값을 지정

// 모의 객체 사용
const result = mockObj.sum(2, 3);

// 검증
expect(result).toBe(10); // sum 메소드의 리턴 값이 10인지 검증
expect(mockObj.sum).toBeCalledWith(2, 3); // sum 메소드가 2와 3의 인자로 호출되었는지 검증

위의 예제에서는 mockObj라는 모의 객체를 생성하였습니다. 그리고 sum이라는 메소드에 대해 리턴 값을 10으로 지정하였습니다. 그 후에 sum 메소드를 호출하고, 리턴 값을 검증하는 예제입니다.

Jest에서 모의 객체를 활용하면 테스트 코드 작성 시 다른 객체와의 상호작용을 쉽게 시뮬레이션할 수 있습니다. 이를 통해 테스트 커버리지를 높이고 안정적인 코드를 작성할 수 있습니다.

더 많은 모의 객체 활용 방법에 대해서는 Jest 공식 문서를 참고하시기 바랍니다.