2016-10-14 2 views
0

타사 addons/libraries의 하위 구성 요소가있는 일부 구성 요소가 있습니다. 내 단위 테스트를 위해 Jest를 사용하고 메소드를 사용합니다. jest.unmock('ChildComponet.js')으로 하위 구성 요소를 제외하려고 시도했지만 다음 오류가 발생합니다.스냅 샷과 일치하도록 Jest에 반응, 자식 구성 요소를 사용하여 구성 요소를 테스트 할 때 충돌이 발생합니다.

jest.unmock ('ChildComponet.js')이 호출되었지만 automocking이 비활성화되었습니다. 불필요한 전화를 jest.unmock으로 제거하거나 jest.enableAutomock();을 통해이 테스트를 위해 automocking을 활성화하십시오.

형식 오류 : 정의되지 않은

의 속성을 읽을 수 없습니다 'DEFINE_MANY'이 경고는 아마 내가 jest.enableAutomock();을 활성화 지금은 TIS 오류가 15

농담의 기본 구성 변화의 결과입니다 내 package.json에 넣어하지만 아무 반응이 없습니다 :

"unmockedModulePathPatterns": [ "ROOTDIR/node_modules/반응"]

아이디어가 있으십니까?

은 React에서 구성 요소의 단위 테스트를 수행하는 올바른 방법입니까? 당신이 이전

jest.mock('component',()=> 'ComponentName') 

테스트 할 모듈의 import 문 :

답변

1

밖으로 조롱하는 가장 쉬운 방법은 지금까지 발견 사용하는 구성 요소를 반응한다.

첫 번째 매개 변수는 전역 npm 모듈의 이름이거나 로컬 구성 요소의 경로입니다 (테스트 파일을 기준으로 한 경로입니다). 두 번째 매개 변수는 문자열을 반환하는 함수입니다 (저는 항상 jsx에서 사용하는 동일한 이름을 반환합니다). 그러면 원래 구성 요소와 이름이 같지만 덤프 구성 요소가 생성됩니다. 따라서 스냅 샷에서 아무런 차이가 보이지 않습니다. 조롱 된 구성 요소는 하위를 렌더링하지 않습니다.

오류 메시지가 표시됩니다.

jest.unmock('ChildComponet.js') was called but automocking is disabled...

문제

jest.unmock 대신 jest.mock을 사용하는 것입니다. Jest에는 모듈의 모든 종속성을 자동으로 모의하는 기능이 있습니다. 자동 모의 기능을 사용하면 jest.unmock을 사용하여 lodash 나 moment와 같은 필수 libs의 실제 주입을 얻을 수 있습니다. 자동 모의 기능이 많은 사람들에게 혼란을 주었기 때문에 자동 모의 기능은 선택 사항으로 만들기로 결정했습니다. Tldr는 자동 조롱을 사용하지 않도록 설정 한 상태에서 조롱되지 않은 것을 조롱했습니다.

TypeError: Cannot read property 'DEFINE_MANY' of undefined

자동 조롱을 활성화하면 가져온 모든 모듈이 undefined으로 바뀝니다. 나는 unmockedModulePathPatterns 설정에 대해 많이 말할 수는 없지만 모듈을 가져 오는 데 사용하는 것과 동일한 패턴을 사용해야한다고 생각합니다. 따라서 글로벌 인 경우 node_modules 폴더의 경로를 지정할 필요가 없습니다.

+0

대단히 감사합니다. 나는 그것을 시험한다. –

관련 문제