>웹 프론트엔드 >JS 튜토리얼 >Jest에서 ES6 임포트를 모의하는 방법: 종합 가이드

Jest에서 ES6 임포트를 모의하는 방법: 종합 가이드

Susan Sarandon
Susan Sarandon원래의
2024-10-23 22:23:30473검색

How to Mock ES6 Imports in Jest: A Comprehensive Guide

Jest로 ES6 Import를 모의하는 방법

소개

ES6 모듈을 테스트할 때 가져온 종속성의 동작을 모의해야 할 수도 있습니다. Jasmine은 간단한 접근 방식을 제공하지만 Jest에는 약간 다른 솔루션이 필요합니다.

Named 내보내기 모의

named 내보내기를 모의하려면 import *와 관련된 해킹을 활용할 수 있습니다. 다음 모듈을 고려하십시오.

<code class="js">// dependency.js
export const doSomething = (y) => console.log(y);</code>

프로덕션 모듈에서:

<code class="js">// myModule.js
import { doSomething } from './dependency';

export default (x) => {
  doSomething(x * 2);
};</code>

테스트에서:

<code class="js">import myModule from '../myModule';
import * as dependency from '../dependency';

describe('myModule', () => {
  it('calls the dependency with double the input', () => {
    dependency.doSomething = jest.fn(); // Mutate the named export

    myModule(2);

    expect(dependency.doSomething).toBeCalledWith(4);
  });
});</code>

기본 내보내기 모의

기본 내보내기에도 동일한 해킹이 작동합니다.

<code class="js">// dependency.js
export default (y) => console.log(y);</code>
<code class="js">// myModule.js
import dependency from './dependency'; // Note the lack of curlies

export default (x) => {
  dependency(x * 2);
};</code>
<code class="js">import myModule from '../myModule';
import * as dependency from '../dependency';

describe('myModule', () => {
  it('calls the dependency with double the input', () => {
    dependency.default = jest.fn(); // Mutate the default export

    myModule(2);

    expect(dependency.default).toBeCalledWith(4); // Assert against the default
  });
});</code>

주의 사항

이 해킹 접근 방식이 작동하는 동안, 특히 테스트가 순서대로 실행되지 않는 경우 테스트에서 부작용과 예측할 수 없는 동작이 발생할 수 있으므로 권장되지 않습니다. 보다 강력하고 안정적인 모의를 위해서는 다른 답변이나 업데이트된 문서에서 제안된 대로 jest.spyOn 또는 jest.mock을 사용하는 것이 좋습니다.

위 내용은 Jest에서 ES6 임포트를 모의하는 방법: 종합 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.