Я пишу функциональные тесты для модулей внутренних приложений моих проектов. Чтобы протестировать некоторые функции, мне нужно смоделировать действия пользователя из приложения веб-интерфейса. Итак, я создал 2
sfTestFunctional instances:
$frontendBrowser = new frontendTestFunctional();
$backendBrowser = new backendTestFunctional();
Эти классы в основном наследуются от sfTestFunctional. Теперь, как мы знаем, каждое приложение в Symfony имеет свой собственный экземпляр контекста, поэтому мы должны сначала переключиться на него:
sfContext::switchTo('frontend');
//this works fine
$frontendBrowser->
get('/home');
sfContext::switchTo('backend');
//the following fails with a misirable error: Cannot redeclare class homeComponents
$backendBrowser->
get('/home');
Итак, проблема в том, что обе страницы имеют свои собственные классы с одинаковыми именами (homeComponents), которые явно не могут быть включены в один скрипт. Что я могу с этим поделать?
P.S вопрос не обязательно связан с Symfony, поэтому я также помечаю его 'php'
обновление: похоже, единственное решение - переименовать все модули в одном приложении, чтобы у классов действий и компонентов были разные имена. Но это очень сложно.