PHPUnit + CodeIgniter具有相同名称的多个对象

时间:2012-04-25 10:41:52

标签: codeigniter phpunit

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

当我对两个文件运行测试时,出现以下错误:

  

PHP致命错误:无法重新声明类Blog ...

嗯,我并不感到惊讶我收到了这个错误。

我可以选择解决此问题吗?

  1. 带有“ajax”的ajax目录中的前缀控制器(看起来只是有点愚蠢的url / ajax / ajax_blog)
  2. 使用名称空间(我想我也需要命名空间codeigniter)
  3. 创建3个单独的phpunit.xml文件
  4. 这不是我想要的解决方案。我还有其他选择吗?是否有可能单独运行每个testsuite,但仍然在一个命令?我可以在测试套件之间“清洁”物体吗?还有什么吗?

1 个答案:

答案 0 :(得分:1)

除了你提到的选项之外没有其他选项,因为不可能在PHP中“卸载”类定义。

在正常运行CI时,将两个控制器命名相同并不是问题,因为每个请求只实例化一个控制器,但应该避免这种情况。

如果它只是您不喜欢的ajax-url,可以在路线中覆盖它(config/routes.php中):

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