2017-08-27 8 views
0

私は単純なメソッドの置換で動作するようにProxyquireを取得しようとしていますが、私が間違っていることを理解できません。Proxyquireがスタブしていない

私はlib.js

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

を作成し、

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

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

そしてtest.jsと

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

test(); 

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

test(); 

つまり依存関係をスタブし、別の機能があるものを交換しようとしましたが、テストでは、2回目の呼び出しで「置き換えられる」代わりに「もの」が両方ともログアウトされます。どんな助けもありがとうございます。 proxyquireで

答えて

1

、あなたが自分自身を必要として使用するのと同じパスを使用します。

ので、次のようになります。

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

この問題を解決するための最良の方法、限り、あなたはそれに直面するだろうし将来的には何回も使用することです:

抽出の理由で何かを模倣して、使用しようとしたファイル名を抽出できない場合は、どちらも例外がスローされます。

関連する問題