2017-08-27 47 views
0

我试图让Proxyquire使用一个简单的方法替换,但我无法弄清楚我做错了什么。Proxyquire not stubbing

创建lib.js

module.exports = { 
    thing:() => { 
     console.log("thing"); 
    } 
}; 

而且test.js

const lib = require("./lib"); 

module.exports =() => { 
    lib.thing(); 
}; 

而且并试图存根的依赖和使用其他功能代替的东西即

const proxyquire = require("proxyquire"); 
const libStub = {}; 
const test = proxyquire("./test", {"lib": libStub}); 

test(); 

libStub.thing =() => { 
    console.log("replaced"); 
}; 

test(); 

但测试在第二次通话中两次注销“事物”而不是“替换”。任何帮助表示赞赏。

回答

1

在proxyquire,请您在使用相同的路径要求本身:

所以应该是:

const proxyquire = require("proxyquire"); 
const libStub = { 
    thing:() => console.log('replaced') 
}; 
const test = proxyquire("./test", {"./lib": libStub}); 
test(); 
0

,最好的办法来解决这个问题,只要你将面对它在未来的很多次是使用:

这两个都会抛出一个异常,以防他们无法嘲笑某些东西,并且提取出原因并提取他们尝试使用的文件名。