我正在为我的项目的后端应用程序模块编写功能测试.要测试某些功能,我需要模拟来自前端应用程序的用户操作.所以,我创造了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
您可以考虑将测试分成两个不同的测试。
第一个运行前端应用程序,然后检查以确保数据库、会话等的状态正确。
第二个测试将设置测试环境来模拟前端应用程序成功完成的结果,然后运行后端应用程序并检查结果。
如果任一应用程序出现回归,这也将有助于后续工作;如果您要合并两个应用程序的测试,那么您从测试失败中获得的信息就会减少。通过对每个应用程序进行单独测试,您将能够更轻松地找到回归(因为您至少会知道哪个应用程序受到影响)。
| 归档时间: |
|
| 查看次数: |
363 次 |
| 最近记录: |