2016-11-18 1 views
0

'/widgets/1.0.js'경로의 Jest 유닛 테스트에 가상 자바 스크립트 파일이 있습니다. 나는 그것의 존재를 시뮬레이션하기 위해 fs 모듈을 조롱했다.어떻게 동적으로로드 된 가상 모듈을 jest로 조롱 할 수 있습니까?

이제 'foo()'메서드를 호출하기 위해 동적으로로드하고 싶습니다. 내가 테스트를 실행하면

index.js 
    let module = require('/widgets/1.0.js'); 
    module.foo(); 

: 나는 그것이 가상 모의 사용하는 경우가 될 것이라고 생각 :

index.test.js 
    jest.mock('/widgets/1.0.js',() => {foo: jest.fn(() => {console.log('foo!')})}, {virtual: true}); 

호출하는 코드를 모의

Cannot find module '/widgets/1.0.js' from 'index.js' 

     at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:151:17) 
     at processWidgets (src/index.js:115:2418) 
     at Object.<anonymous> (src/__tests__/index.test.js:99:73) 

을 나는 그것을 생각 가능해야합니다. 어떤 아이디어?

감사합니다.

답변

0

모듈 경로에 문제가있는 것으로 보입니다. 작동 방식 :

index.test.js 
jest.mock('1.0',() => { 
    return { 
    foo:() => {return 42;} 
    } 
}, {virtual: true}); 

index.js 
const module = require('1.0'); 
    let retval = module.foo(); 
    console.log('retval: ', retval); 

'/widgets/1.0'을 사용하는 경우 작동하지 않습니다. 희망은 ..

관련 문제