我正在为我的项目的后端应用程序模块编写功能测试。为了测试某些功能,我需要从前端应用程序模拟用户操作。所以,我创建了 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”
更新:似乎唯一的解决方案是重命名一个应用程序中的所有模块,以便操作和组件类具有不同的名称。但这是非常复杂的。
最佳答案
您可以考虑将测试分成两个不同的测试。
第一个运行前端应用程序,然后检查以确保数据库、 session 等的状态正确。
第二个测试将设置测试环境以模拟前端应用程序成功完成的结果,然后运行后端应用程序并检查结果。
如果任一应用程序出现回归,这也将有助于解决问题;如果您要对两个应用程序的测试进行合并,那么您从测试失败中获得的信息会更少。通过对每个应用程序进行单独测试,您将能够更轻松地找到回归(因为您至少会知道哪个应用程序受到影响)。
关于php - 交响乐 : multiple applications in one test,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5606242/