2017-08-27 80 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

,最好的辦法來解決這個問題,只要你將面對它在未來的很多次是使用:

這兩個都會拋出一個異常,以防他們無法嘲笑某些東西,並且提取出原因並提取他們嘗試使用的文件名。