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

Jest는 자바스크립트 단위 테스트를 위한 강력한 도구입니다. Jest에서는 모의 객체(Mock object)를 사용하여 테스트에서 특정 함수나 객체의 동작을 검증하거나 조작할 수 있습니다.

모의 객체를 만들기 위해서는 jest.mock() 함수를 사용합니다. 이 함수는 자동으로 모의 객체를 생성하여 해당 모듈이나 객체를 대체하는 역할을 합니다.

다음은 모의 객체를 사용하는 예제 코드입니다.

// 예제 모듈
// module.js
export function doSomething() {
  // Implementation
}
// 테스트 파일
import { doSomething } from './module';

jest.mock('./module');

test('doSomething 함수를 호출해야 함', () => {
  doSomething();

  expect(doSomething).toHaveBeenCalled();
});

위의 예제에서는 jest.mock() 함수를 사용하여 module.js 모듈을 모의 객체로 대체하고 있습니다. 이를 통해 doSomething 함수의 호출 여부를 확인합니다.

Jest에서는 모의 객체의 동작을 직접 설정할 수도 있습니다.

// 예제 모듈
// module.js
export function fetchData() {
  // Implementation
}

// 테스트 파일
import { fetchData } from './module';

jest.mock('./module', () => ({
  fetchData: jest.fn().mockResolvedValue({ data: 'Test Data' }),
}));

test('fetchData 함수가 정상적으로 호출되고 데이터를 반환해야 함', async () => {
  const result = await fetchData();

  expect(fetchData).toHaveBeenCalled();
  expect(result).toEqual({ data: 'Test Data' });
});

위의 예제에서는 fetchData 함수를 모의 객체로 대체하고 있습니다. jest.fn() 함수를 사용하여 fetchData 함수를 모의 함수로 설정하고, 그 함수의 반환 값을 mockResolvedValue() 함수로 지정해줍니다. 이를 통해 fetchData 함수가 호출되고 데이터를 반환하는 것을 검증할 수 있습니다.

Jest에서의 모의 객체 사용은 테스트 작성에 매우 유용한 기능입니다. 모의 객체를 사용하면 테스트 대상 코드와 상호작용하는 부분을 명확하게 확인하고, 테스트의 격리성과 신뢰성을 높일 수 있습니다.

더 자세한 사항은 Jest 공식 문서를 참조하시기 바랍니다.