У меня есть следующий базовый деваха для испытаний контроллера:WebTestCase терпит неудачу после Silex 2 обновления
public function createApplication() {
include __DIR__ . '../web/index_dev.php';
$app['debug'] = true;
$app['session.test'] = true;
$app['helper'] = function ($app) {
return new TestHelper($app);
}; // fails!!
return $app;
}
public function setUp() {
parent::setUp();
$this->client = parent::createClient();
}
В Silex 1.3 работала нормально, но после обновления для v2 она не на отмеченной линии. Как только я прокомментирую это - все в порядке.
UPD # 1: Я понял, почему это не удается: Cannot override frozen service "helper".
Я понимаю смысл ошибки, но не могу понять, как ее исправить. Это тестовый пример, поэтому мне нужно заменить его ложным/тестовым выполнением объекта, но не может.
Привет, спасибо за ваш ответ. На самом деле, я получил его уже, вопрос в том, как рефакторировать прослушиватели событий, такие как '$ app-> error' или' $ app-> before'? Это часть процесса загрузки. Кроме того, каковы наилучшие методы переопределения объектов во время тестов? – nKognito
Я бы выбрал разные конфигурационные файлы в зависимости от среды (dev, prod, test). Сначала определите среду, а затем настройте сервисы на ее основе, например, официальный [Silex Skeleton] (https://github.com/silexphp/silex-skeleton). – mTorres