Я до сих пор не на 100% уверен, что издеваюсь / заглушаюсь, а просто исправляю обезьяну?
Для python, почему мы не всегда просто исправляем обезьяну?
Пример ниже
a) mockBinanceConn - это магический макет - возвращаются значения с заглушкой (мы могли бы просто использовать патч обезьяны вместо использования макета)
б) analyticService.triggerCalculator внизу была исправлена обезьяна, очень удобно, используя простую лямбду
Вопрос в том, почему мы не всегда обезьяны исправляем? Для примера ниже я вижу одно преимущество с mock - вам не нужно создавать 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()