2016-11-18 38 views
0

我具有與路徑「/widgets/1.0.js」一個玩笑單元測試虛擬JavaScript文件。我嘲笑fs模塊來模擬它的存在。我該如何嘲笑一個動態加載的虛擬模塊?

現在我想動態加載調用方法「foo的()」。我認爲這將是使用虛擬模擬的情況:

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

它調用的代碼的模擬:

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

當我運行測試:

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'它不。希望它有幫助..

相關問題