Я знаю, что это типичный вариант использования фиктивных объектов, но это также старый аргумент ... являются ли имитируемые объекты необходимыми или они зло ?
Я на стороне тех, кто верит, что макеты злые и постараются вообще не менять проверенный код. Я даже считаю, что такая необходимость модифицировать проверенный код - это запах кода ...
Если вы хотите изменить или перехватить внутренний вызов функции для целей тестирования, вы также можете сделать эту функцию явной внешней зависимостью, установленной во время создания экземпляра, которая будет обеспечиваться как вашим рабочим кодом, так и тестовым кодом. Если вы сделаете это, проблема исчезнет, и вы получите более чистый интерфейс.
Обратите внимание, что при этом нет необходимости изменять проверенный код вообще ни внутри, ни во время выполняемого теста.