2016-11-18 2 views
0

Ich habe eine virtuelle Javascript-Datei in einem Jest Unit-Test mit dem Pfad '/widgets/1.0.js'. Ich habe das fs-Modul verspottet, um seine Existenz zu simulieren.Wie kann ich ein dynamisch geladenes, virtuelles Modul im Scherz verhöhnen?

Jetzt möchte ich es dynamisch laden, um eine Methode 'foo()' aufzurufen. Ich dachte, es wäre ein Fall der Verwendung eines virtuellen Mock sein:

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

Der Code, der Mock ruft:

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

Wenn ich den Test ausführen:

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) 

Ich denke, es sollte möglich sein. Irgendwelche Ideen?

danke!

Antwort

0

Es scheint ein Problem mit dem Modulpfad zu sein. Dies funktioniert:

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); 

Wenn ich '/widgets/1.0' benutze es nicht. Hoffe es hilft ..

Verwandte Themen