相对于猴子补丁,我还是不是100%清楚的嘲笑/短截?
对于python,为什么我们不总是只猴子补丁?
下面的例子
a) mockBinanceConn 是一个魔术模拟-返回值存根(我们可以只猴子打补丁而不使用模拟)
b)下面的 analyticService.triggerCalculator 是猴子补丁,使用简单的lambda即可很方便
问题是,为什么我们不总是猴子补丁?在下面的示例中,我可以看到使用模拟的一个优势-您不需要构造“ mockBinanceConn”。
@patch('Market.Crypto.binance.BinanceConnector')
def testAnalyticService_RunAlgo_BACKTEST(self, mockBinanceConn):
mockBinanceConn.getTrades.return_value = self.dummyTrades
mockBinanceConn.getOrderBook.return_value = self.dummyOrderBook
self.mktService.marketConn[mktAccess.MarketAccessService.PROVIDER_BINANCE] = mockBinanceConn
strategies = self.dao.getStrategies()
self.mktService.reloadMarketData(strategies)
# monkey patch analyticService to speed up test (We're not testing Algo here)
dummyTriggerCalculator = lambda mode, cob, strategyId, instrumentId, testId : 1
self.analyticService.triggerCalculator = dummyTriggerCalculator
self.analyticService=.calcPnl()