Я работаю над написанием тестов с использованием Codeception + Selenium + PhantomJS. Проблема, с которой я столкнулся, заключается в том, что мне нужно имитировать различные классы и связывать разные реализации в разных тестах (иногда имитирует классы с предопределенными результатами, возвращаемыми их методами).
При написании модульных тестов с PHPUnit это просто:
$setterMock = Mockery::mock(MyClass::class);
$setterMock->shouldReceive('classMethod')
->andReturn('result');
$this->app->instance(MyClass::class, $setterMock);
Но при написании интеграционных тестов я не знаю, как получить доступ к экземпляру $ app. Я пытался применить аналогичный код в __bootstrap.php внутри папки приемочных тестов, но это не сработало.