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

PHPUnit+;CodeIgniter具有相同名称的多个对象,codeigniter,phpunit,Codeigniter,Phpunit,我目前使用CIUnit用phpunit测试我的CodeIgniter应用程序(https://bitbucket.org/kenjis/my-ciunit). 问题是我有多个同名的控制器。我在根控制器目录中有一个名为“Blog”的控制器,在controller/ajax/目录中有一个名为“Blog”的控制器。 原因是将所有ajax请求与主控制器分离 在这两个文件上运行测试时,出现以下错误: PHP致命错误:无法在中重新声明类日志 嗯,我并不惊讶我会犯这样的错误 我有什么办法来解决这个问题 在aj

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

在这两个文件上运行测试时,出现以下错误:

PHP致命错误:无法在中重新声明类日志

嗯,我并不惊讶我会犯这样的错误

我有什么办法来解决这个问题

  • 在ajax目录中的控制器前面加上“ajax”(看起来只是有点愚蠢的url/ajax/ajax\u blog)
  • 使用名称空间(我想我也需要使用名称空间codeigniter)
  • 创建3个单独的phpunit.xml文件

  • 这不是我真正想要的解决方案。我还有其他选择吗?是否有可能单独运行每个测试套件,但仍然在一个命令中运行?我可以在测试套件之间“清理”对象吗?还有什么吗?

    除了您提到的选项之外,没有其他选项,因为无法在PHP中“卸载”类定义

    当您正常运行CI时,将两个控制器命名为同一个控制器不是问题,因为每个请求只实例化一个控制器,但应该避免这样做

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

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