Я подозреваю, что «лучший» ответ на мой вопрос - использовать инъекцию зависимостей и полностью исключить проблему. К сожалению, у меня нет такого варианта ...Как превентивно издеваться над классом, который получает экземпляр другим классом
Мне нужно написать тест для класса, который создает экземпляр библиотеки сторонних разработчиков. Я хочу обмануть/заглушить класс библиотеки, чтобы он не вызывал вызовы API в реальном времени.
Я использую phpunit в каркасе CakePHP v3.x. Я могу издеваться над библиотекой и создавать ответы на заглушку, но это не мешает «реальному» классу создавать экземпляр кода вне моего теста. Я считал, что пытаюсь высмеять класс (ы) вверх по потоку от экземпляра, но есть лот из них, что сделало бы тест невероятно громоздким для написания/поддержки.
Есть ли способ каким-то образом «заглушить» экземпляр класса? Аналогично тому, как мы можем сказать, что модуль php ожидает вызова API и задает возвращаемые данные?
Вы заявляете, что вы не можете вводить зависимости, но можете ли вы заменить «новый» оператор для вызова Factory? Таким образом, вы можете взять контроль над Фабрикой и заставить ir вернуть макет. – gontrollez