> 웹 프론트엔드 > JS 튜토리얼 > Jest에서 ES6 모듈 가져오기를 모의하는 방법은 무엇입니까?

Jest에서 ES6 모듈 가져오기를 모의하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-10-23 22:31:30
원래의
904명이 탐색했습니다.

How to Mock ES6 Module Imports in Jest?

Jest에서 ES6 모듈 가져오기 모의

소개

Jest는 모의를 포함하여 단위 테스트를 위한 포괄적인 도구 모음을 제공합니다. 코드에서 가져온 모듈입니다. 이 기사에서는 Jest에서 ES6 모듈 가져오기를 모의하는 방법을 설명하고 모듈 종속성을 테스트하는 문제를 해결합니다.

문제 설명

모의 모듈 가져오기를 통해 개발자는 ES6 모듈 가져오기의 동작을 격리할 수 있습니다. 종속 모듈에 대한 테스트를 실행하는 동안 특정 모듈. 그러나 import를 spy로 대체하는 Jasmine에서 사용하는 접근 방식은 테스트 환경이 다르기 때문에 Jest에 직접 적용할 수 없습니다.

Solution

Jest는 import * 구문은 모듈의 모든 내보내기를 단일 객체로 가져옵니다. 이 기술을 활용하여 ES6 모듈 가져오기를 모의할 수 있습니다.

이름이 지정된 내보내기 모의

이름이 지정된 내보내기의 경우 import *를 사용하여 모듈을 가져온 다음 내보낸 객체를 다음으로 변경하면 됩니다. 원하는 기능을 모의합니다:

// dependency.js
export const doSomething = (y) => console.log(y);
로그인 후 복사
// myModule.js
import { doSomething } from './dependency';

export default (x) => {
  doSomething(x * 2);
};
로그인 후 복사
// myModule-test.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);
  });
});
로그인 후 복사

기본 내보내기 모의

기본 내보내기의 경우 'modulePath'에서 import moduleName을 사용하여 가져올 수 있습니다. 그런 다음 가져온 개체의 기본값을 변경합니다.

// dependency.js
export default (y) => console.log(y);
로그인 후 복사
// myModule.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
  });
});
로그인 후 복사

결론

import * 구문을 사용하고 내보낸 개체를 변경하는 것이 가능합니다. Jest에서 ES6 모듈 임포트를 모의하여 모듈의 종속성을 분리하면서 모듈의 기능을 테스트할 수 있습니다.

위 내용은 Jest에서 ES6 모듈 가져오기를 모의하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿