2012-04-25 118 views
0

我目前使用CIUnit(https://bitbucket.org/kenjis/my-ciunit)通过phpunit测试我的CodeIgniter应用程序。问题是我有多个具有相同名称的控制器。我在名为“Blog”的根控制器目录中有一个控制器,并且我在controller/ajax /目录中有一个名为“Blog”的控制器。 原因是分离主控制器的所有ajax请求。PHPUnit + CodeIgniter具有相同名称的多个对象

当我在这两个文件运行测试,我得到以下错误:

PHP Fatal error: Cannot redeclare class Blog in ...

好吧,我不惊讶,我得到这个错误。

我有哪些选择来解决这个问题?在 “Ajax” 的AJAX目录

  1. 前缀控制器(看起来只是一个有点笨URL/AJAX/ajax_blog)
  2. 使用命名空间(我想我需要命名空间笨太然后)
  3. 创建3独立的PHPUnit .xml文件

这并不是真正的解决方案,我正在寻找。我有其他选择吗?是否有可能分开运行每个测试套件,但仍然在一个命令?我可以在测试套件之间“清洁”物体吗?还要别的吗?

回答

1

有除了你提到的那些没有其他选择,因为它是不可能在PHP“卸载”类定义。

命名两个控制器同样是没有问题的,当你运行CI正常,因为只有一个控制器,每个请求的实例,但应避免的东西。

如果它仅仅是你不喜欢的Ajax的网址,可能覆盖它的路线(在config/routes.php):

$routes['ajax/blog'] = 'ajax/ajax_blog'; 
+0

嗯,的确是个好主意!忘记了路由选项。谢谢! – 2012-04-25 12:28:47