[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 공식 문서를 참고하시기 바랍니다.