我正在尝试将 SimpleTest 与 CodeIgniter 一起使用,使用由 栗色字节. 。我正在使用 LAMP 和 NetBeans 6.9。

test.php 页面在我的浏览器中加载。我有一个存根测试,它显示在下拉选择中。当我尝试运行它时,出现 2 个 PHP 错误:

信息:include_once(/var/www/sparts3/main/tests/basic_test_v.php):无法打开流:没有这样的文件或目录

信息:include_once():打开'/var/www/sparts3/main/tests/basic_test_v.php'用于包含(include_path ='。:/usr/usr/share/share/php:/php:/usr/share/pear')

路径错误—— basic_test_v.php 位于子文件夹中 /测试/视图.

调试器指出这一点 测试.php:

function add_test($file, &$test)

由于某种原因,NetBeans 此时不公开 $file 的值。这是否意味着它是空的?

我已经修改了一行代码,因为它让我跳过了 Code 404 Page Not Found(代码 404 未找到页面)。看来调试器 GET 导致验证器失败。所以我以我无知的方式添加了一个标准(我确信它应该是一个已处理的异常或其他东西):

if ($this->uri->uri_string == '' || $this->uri->uri_string == 'XDEBUG_SESSION_START')
    {   ...  }

我该如何解决这个问题?顺便说一句,这是试图解决 我的另一篇文章, ,我会更新;似乎最好把这个问题变成一个离散的问题。


更新1: 我一直在使用 Web Developer 插件 (Firefox) 来试验 POST 条目。我相信这些在代码中处理不当。NetBeans 似乎仍然不愿在调试时显示一些字符串变量;这令人沮丧。

更新2: 在我看来,有效的代码处理在 NetBeans 停止显示变量的同一点停止。我正在迈过 测试.php. 。我正在执行一个函数, add_test($文件, &$测试). 。该函数以 if 语句打开;效果很好,我可以看到变量。然后是一个新的 if 语句:

if (file_exists($implementation))
{
    require_once ($implementation); ...

一旦我上线,就会发生两件事:

  1. Netbeans中显示的变量除外,除了超级全球
  2. 该代码的行为就像$实施 是一个空变量

我在这些行上方添加了一条声明:

$implementation = 'http://var/www/sparts3/main/tests/views/basic_test_view.php';

这不会改变任何事情。无论我是否使用 NetBeans/Xdebug,浏览器输出都是相同的。

所以它开始看起来像是 PHP 处理故障。那些存在吗?我可能会尝试从主机服务上传和尝试——仅用于诊断线索,而且毫无兴致,因为没有调试能力的 CI 对我不感兴趣。


更新3: 我在 WAMP PC 上尝试了一切。相同的浏览器结果(加上一些“已弃用”错误,与 PHP 4 与 PHP 4 相关)5)。我想我可以在那台 PC 上进行调试(如果 Xdebug 正常运行),但似乎没有什么意义。

有帮助吗?

解决方案

您是否将 basic_test_v.php 重命名为 basic_test_view.php ?该代码期望您的文件能够正确命名和存储。

更新1 (是的,我很无聊)

我已经使用了一系列代码,因为它使我超越了一个未找到的代码404页。调试器似乎导致验证器失败。因此,我以无知的方式添加了一个标准(我敢肯定应该是处理的例外或其他内容):

if ($this->uri->uri_string == '' || $this->uri->uri_string == 'XDEBUG_SESSION_START') {   ...  }

我该如何解决这个问题?顺便说一句,这是为了解决我的其他帖子,我将更新;似乎最好将此作为一个离散的问题。

这个问题的“正确”解决方案是:放 $config['uri_protocol'] = "AUTO";$config['uri_protocol'] = "PATH_INFO";$config['enable_query_strings'] = FALSE;$config['enable_query_strings'] = TRUE;在 config.php 中(阅读这些设置上面的注释,它们非常有帮助)

深入研究 test.php 后,我可以告诉您,您的测试文件应该这样命名:

%name%_%type%_test.php(其中%type%是单数)

为了更清楚地说明这一点,这里举一个例子:

我们在文件中迎来了一个控制器的欢迎。php该控制器的测试应命名 欢迎控制器_test.php并存储在tests/controllers/下

test.php 脚本尝试自动加载测试文件和被测试文件。但在我看来,它需要纠正。

我已经更改了函数 get_loader_id 和 add_test ,如下所示

function get_loader_id($file, $type) {
   $loader_id = str_replace("_{$type}_test.php", "", basename($file));
   return $loader_id;
}
function add_test($file, &$test) {
   $implementation = '';
   if (preg_match('/_controller/', $file)) {
      $controller = get_loader_id($file, 'controller');
      $implementation = APPLICATION . 'controllers/' . $controller . '.php';
   } elseif (preg_match('/_model/', $file)) {
      $model = get_loader_id($file, 'model');
      $implementation = APPLICATION . 'models/' . $model . '_model.php';
   } elseif (preg_match('/_view/', $file)) {
      $view = get_loader_id($file, 'view');
      $implementation = APPLICATION . 'views/' . $view . '.php';
   } elseif (preg_match('/_helper/', $file)) {
      $helper = get_loader_id($file, 'helper');
      $implementation = APPLICATION . 'helpers/' . $helper . '.php';
   } elseif (preg_match('/_library/', $file)) {
      $library = get_loader_id($file, 'library');
      $implementation = APPLICATION . 'libraries/' . $library . '.php';
   }
   if (file_exists($implementation)) {
      require_once ($implementation);
   }
   $test->addFile($file);
}

如果您遵循文件名约定,则所有内容都应该很好地运行(我已经在带有Zend Server CE,Xdebug,Simpletest和Netbeans的MacBook上进行了测试)6.9)

其他提示

如果您尝试加载的是视图,您是否尝试过使用 $this->load->view('basic_test_view'); ?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top