我试图使用proxyquire模拟快速行为,我在处理以下命令时遇到了一些麻烦:
expressProxy = () => {
return {
use: () => true,
post: () => true,
listen: () => true
}
}
Application = proxyquire('./../app', {
'express': expressProxy,
'passport': passportProxy,
'./app/business/service/StrategyFactory': StrategyFactoryProxy
})
当我使用以下代码启动我的应用程序时:
Application.main()
我总是有完整的表达行为,因为它通常应该有效。
我拥有完整而完整的快速对象,就像它没有被重新定义一样......
我有点失落,我不明白这里发生了什么。
任何可以帮助我理解的信息?
答案 0 :(得分: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