Symfony: несколько приложений в одном тесте - PullRequest
5 голосов
/ 09 апреля 2011

Я пишу функциональные тесты для модулей внутренних приложений моих проектов. Чтобы протестировать некоторые функции, мне нужно смоделировать действия пользователя из приложения веб-интерфейса. Итак, я создал 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'

обновление: похоже, единственное решение - переименовать все модули в одном приложении, чтобы у классов действий и компонентов были разные имена. Но это очень сложно.

1 Ответ

1 голос
/ 07 июня 2011

Возможно, вы захотите разбить тест на два отдельных теста.

Первый запускает приложение внешнего интерфейса, а затем проверяет правильность состояния базы данных, сеанса и т. Д.

Во втором тесте будет настроена тестовая среда для имитации результатов успешного завершения приложения веб-интерфейса, а затем запуска приложения внутреннего уровня и проверки результата.

Это также поможет в будущем, если регрессия всплывет в любом приложении; если бы вы продолжали консолидировать тесты для обоих приложений, вы бы получили меньше информации в случае сбоя теста. С помощью отдельного теста для каждого приложения вы сможете легче находить регрессию (поскольку вы, по крайней мере, будете знать, какое приложение затронуто).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...