我试图使用SimpleTest的使用CodeIgniter,利用提供的代码maroonbytes 。 我使用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 /共享/ PHP的:在/ usr /共享/梨')
该道路是错误的- basic_test_v.php是一个子文件夹/测试/视图 。
调试器指向这test.php的 :
function add_test($file, &$test)
出于某种原因的NetBeans不会在这一点上暴露$文件的价值。 这是否意味着它是空的?
我已经撬开了一行代码,因为它让我过去码404找不到网页。 它似乎调试GET是导致验证失败。 所以我增加了一个标准,我的无知方式(我敢肯定,这应该是一个处理的异常或东西):
if ($this->uri->uri_string == '' || $this->uri->uri_string == 'XDEBUG_SESSION_START')
{ ... }
我该如何解决这个问题? 顺便说一句,这是试图解决我的其他职务 ,我将更新; 似乎最大的努力使离散的问题。
更新1:我一直在使用Web开发插件(火狐)与POST项实验。 我相信这是在代码中使用不当。 它似乎仍然NetBeans在显示在调试一些字符串变量犹豫不决; 这是令人沮丧的。
更新2:在我看来,是有效的代码处理在同一地点的NetBeans停止显示变数停止。 我通过test.php的步进。 我中途功能,add_test($文件,&$测试)。 此功能与if语句打开; 即完成好,我能看到的变量。 然后,一个新的if语句:
if (file_exists($implementation))
{
require_once ($implementation); ...
只要我在这条线,2件事情:
- 在NetBeans中的变量显示去除了超全局空白
- 代码的行为就好像$实现是一个空变量
我刚加入这行上述声明:
$implementation = 'http://var/www/sparts3/main/tests/views/basic_test_view.php';
这不会改变任何东西。 该浏览器的输出是我是否使用NetBeans / Xdebug的还是不一样的。
所以它开始看起来像一个PHP处理故障。 做那些存在吗? 我可能会尝试上传和主机服务尝试 - 为诊断线索而已,cheerlessly,因为没有调试能力CI是不感兴趣的我。
更新3:我什么都试过了WAMP的PC上。 同一浏览器的结果(再加上一些“过时”的错误,是与PHP 4比5)。 我想我可以在PC机上调试(如果Xdebug的正在工作),但似乎没有多大意义。
你有没有改名basic_test_v.php到basic_test_view.php? 该代码期望您的文件将被命名和存储的权利。
更新1(是即时通讯无聊)
我已经撬开了一行代码,因为它让我过去码404找不到网页。 它似乎调试GET是导致验证失败。 所以我增加了一个标准,我的无知方式(我敢肯定,这应该是一个处理的异常或东西):
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的更深入的了解之后,我可以告诉你,你的测试文件应被命名为这样的:
%名称%_%类型%_test.php(其中%类型%是单数)
使其更清楚这里的例子:
我们已经得到了放置在文件中的控制器欢迎的welcome.php该控制器的测试应该被命名为welcome_controller _test.php下测试/控制器存储/
所述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的测试,它的的MacBook,SimpleTest的和NetBeans 6.9)
如果你试图加载的是一个观点,你有没有尝试过使用$this->load->view('basic_test_view');
?