Какая разница при выполнении monkeyPatch и StubOutwithMock?
Я сталкивался с этим во время проведения юнит-теста, мне любопытно узнать, в чем разница между двумя ниже?
self.monkeyPatch(module, 'myFunc', lambda n: someObject)
а также
mox.StubOutWithMock(module, 'myFunc')
module.myFunc(n).AndReturn(someObject)
где myFunc - публичная функция в модуле, n - аргумент, передаваемый myFunc, и он возвращает someObject.
1 ответ
Просто разные библиотеки / реализации патчей для обезьян.
Monkeypatching может быть выполнен без какой-либо библиотеки, но у него есть ряд повторяющихся (и отчасти уродливых) вещей, которые он должен сделать, поэтому, если вы начнете реализовывать его самостоятельно, вы в конечном итоге создадите помощников, которые помогут с этим. И, естественно, есть пара готовых к использованию библиотек, чтобы сделать это для вас.