макет против исправления обезьяны - PullRequest
0 голосов
/ 01 ноября 2018

Я до сих пор не на 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...