Какая разница при выполнении monkeyPatch и StubOutwithMock?

Я сталкивался с этим во время проведения юнит-теста, мне любопытно узнать, в чем разница между двумя ниже?

self.monkeyPatch(module, 'myFunc', lambda n: someObject)

а также

mox.StubOutWithMock(module, 'myFunc')
module.myFunc(n).AndReturn(someObject)

где myFunc - публичная функция в модуле, n - аргумент, передаваемый myFunc, и он возвращает someObject.

1 ответ

Просто разные библиотеки / реализации патчей для обезьян.

Monkeypatching может быть выполнен без какой-либо библиотеки, но у него есть ряд повторяющихся (и отчасти уродливых) вещей, которые он должен сделать, поэтому, если вы начнете реализовывать его самостоятельно, вы в конечном итоге создадите помощников, которые помогут с этим. И, естественно, есть пара готовых к использованию библиотек, чтобы сделать это для вас.

Другие вопросы по тегам