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