2016-09-05 62 views
0

我想要使用proxyquire模擬一個明確的行爲而我會遇到一些麻煩處理下面的命令:Proxyquire和功能導入

expressProxy =() => { 
     return { 
     use:() => true, 
     post:() => true, 
     listen:() => true 
     } 
    } 

Application = proxyquire('./../app', { 
     'express': expressProxy, 
     'passport': passportProxy, 
     './app/business/service/StrategyFactory': StrategyFactoryProxy 
    }) 

當我使用下面的代碼開始我的應用程序:

Application.main() 

我總是有完整的表達行爲,因爲它應該通常工作。

我米有,就好像它沒有被重新定義了全面和完整的快遞物件......

我米有點失落,我不明白是怎麼回事。

有助於我理解的任何信息?

回答

1

默認情況下,proxyquire將所有方法調用傳遞給原始依賴項。 可以使用「@noCallThru」將其關閉,如果你想禁用特定存根:

var foo = proxyquire('./foo', { 
    path: { 
     extname: function (file) { ... } 
    , '@noCallThru': true 
    } 
}); 

.noCallThru(),如果你想將其關閉所有存根:

// all stubs resolved by proxyquireStrict will not call through by default 
var proxyquireStrict = require('proxyquire').noCallThru(); 

https://github.com/thlorenz/proxyquire#preventing-call-thru-to-original-dependency充分說明