Тестирование связанного кода и Dependency Injection
Всем привет, сегодня я хочу немного порассуждать о тестировании сильно связанного кода, о Dependency Injection и способах его реализации, в том числе мы посмотрим на одно интересное PHP-расширение. Да, кстати, говорить будем о PHP. Доводилось ли вам когда-нибудь тестировать подобный код? class Car { protected $engine; public function __construct () { $this→engine = new Engine (); }
public function start () { if ($this→engine→hasFuel ()) { $this→engine→start (); } else { throw new CarException (self: EXCEPTION_NO_FUEL); } } } Как протестировать метод start и, скажем, условие отсутствия топлива и выброшенного исключения? Очевидная проблема заключается в том, что поведение тестируемого метода зависит от стороннего класса Engine и его метода hasFuel, а этот класс «зашит» в код тестируемого класса. Читать дальше →