php - 交响乐 : multiple applications in one test

标签 php symfony1

我正在为我的项目的后端应用程序模块编写功能测试。为了测试某些功能,我需要从前端应用程序模拟用户操作。所以,我创建了 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/

相关文章:

php - 帮助排查 PDO 准备语句

php - Mysql查询的问题

symfony1 - Symfony路由参数要求限制

php - 如何在 Laravel 4 中注入(inject)多个共享相同接口(interface)的类

php - phonegap 上成功条件 ajax 出错

javascript - 将 id 值传递给 ajax 页面

templates - Symfony1 模板默认值和回退或模块之间的模板共享

php - 使用 Symfony/Doctrine 的 Memcache 正在重新加载数据

symfony1 - Symfony 1.4 动态验证可能吗?

php - 管理生成器 - 可见或不 Action