我正在尝试使用proxyquire模拟一个表达行为,并且在处理以下命令时遇到了一些麻烦:
expressProxy = () => {
return {
use: () => true,
post: () => true,
listen: () => true
}
}
Application = proxyquire('./../app', {
'express': expressProxy,
'passport': passportProxy,
'./app/business/service/StrategyFactory': StrategyFactoryProxy
})
当我使用以下代码启动应用程序时:
Application.main()
我总是表现出完整的行为,因为它通常可以正常工作。
我拥有完整而完整的express对象,就好像它没有被重新定义一样。
我有点迷茫,我不明白这里发生了什么。
有什么信息可以帮助我理解吗?
最佳答案
默认情况下,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获得完整说明