Symfony:一次测试中的多个应用程序

Dzi*_*mid 5 php symfony1

我正在为我的项目的后端应用程序模块编写功能测试.要测试某些功能,我需要模拟来自前端应用程序的用户操作.所以,我创造了2

sfTestFunctional instances:
$frontendBrowser = new frontendTestFunctional();
$backendBrowser = new backendTestFunctional();
Run Code Online (Sandbox Code Playgroud)

这些类基本上都是从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');
Run Code Online (Sandbox Code Playgroud)

所以,问题是两个页面都有自己的同名类(homeComponents),显然不能包含在一个脚本中.我能做些什么吗?

PS问题不一定与Symfony有关,所以我也标记为'php'

更新:似乎唯一的解决方案是重命名一个应用程序中的所有模块,以便操作和组件类具有不同的名称.但这非常复杂.

小智 1

您可以考虑将测试分成两个不同的测试。

第一个运行前端应用程序,然后检查以确保数据库、会话等的状态正确。

第二个测试将设置测试环境来模拟前端应用程序成功完成的结果,然后运行后端应用程序并检查结果。

如果任一应用程序出现回归,这也将有助于后续工作;如果您要合并两个应用程序的测试,那么您从测试失败中获得的信息就会减少。通过对每个应用程序进行单独测试,您将能够更轻松地找到回归(因为您至少会知道哪个应用程序受到影响)。