我在另一个forum问了同样的问题,但我还没有运气。所以请允许我在这里提出同样的问题。
我想设置Zend_Test来测试我的控制器代码(我正在使用PHP,Zend Framework)。根据{{3}},一切似乎都是正确的,但我一直都是错误的。
有关问题和我的设置的详细说明,请参阅此处的official documentation。任何人都可以给我一个线索,我的设置有什么问题?
谢谢!此致,Andree。
答案 0 :(得分:1)
我在使用setFallbackAutoloader(true)之前遇到过这个问题,但是我从来没有能够找到根本原因。如果你谷歌错误,你会发现一些提到它的ZF错误报告。
您是否可以确认您的应用程序中还使用了setFallbackAutoloader(true)?如果没有,那么您可以从TestHelper.php中删除该行。如果是,请尝试添加:
$autoLoader->suppressNotFoundWarnings(true);
就在它之后,这通常会为我解决问题(但可能会导致其他一些问题)。
答案 1 :(得分:0)
查看本教程,然后按照步骤进行操作。对我来说很好。
答案 2 :(得分:0)
我在几个会议上就这个主题发表了演讲,甚至在Zend网站上也有一个网络研讨会(见下面的链接)。
当我查看您的设置脚本时,您会在应用程序中添加更多功能时难以维护。
我的TestHelper类仅包含以下内容:
<?php
/*
* Example test helper script taken from the blog article of Matthew Weier
* O'Phinney on September 11, 2008
*
* {@link http://weierophinney.net/matthew/archives/190-Setting-up-your-Zend_Test-test-suites.html}
*/
/*
* Start output buffering
*/
//ob_start();
/*
* Set error reporting to the level to which code must comply.
*/
error_reporting( E_ALL | E_STRICT );
/*
* Set default timezone
*/
date_default_timezone_set('Europe/Brussels');
/*
* Testing environment
*/
if (!defined('APPLICATION_ENV'))
define('APPLICATION_ENV', 'testing');
/*
* Determine the root, library, tests, and models directories
*/
$root = realpath(dirname(__FILE__) . '/../');
$library = $root . '/library';
$tests = $root . '/tests';
$models = $root . '/application/models';
$controllers = $root . '/application/controllers';
/*
* Set up application and test path constant for easy access helper classes
*/
if (!defined('APPLICATION_PATH'))
define('APPLICATION_PATH', $root . '/application');
define('TEST_PATH', $tests);
/*
* Prepend the library/, tests/, and models/ directories to the
* include_path. This allows the tests to run out of the box.
*/
$localFrameworkPaths = array (
'/usr/local/zend/share/ZendFramework/library',
'/opt/ZendFramework',
);
$include_path = get_include_path();
foreach ($localFrameworkPaths as $zfPath) {
$include_path = str_replace($zfPath . PATH_SEPARATOR, '', $include_path);
}
$path = array(
APPLICATION_PATH,
$models,
$library,
$tests,
$include_path,
);
set_include_path(implode(PATH_SEPARATOR, $path));
/**
* Register autoloader
*/
require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload();
/**
* Store application root in registry
*/
Zend_Registry::set('testRoot', $root);
Zend_Registry::set('testBootstrap', $root . '/application/bootstrap.php');
/**
* Say to the sessions we use unit testing here
*/
Zend_Session::$_unitTestEnabled = true;
/*
* Unset global variables that are no longer needed.
*/
unset($root, $library, $models, $controllers, $tests, $path);
这类似于他博客上提供的原始设置MWOP(请参阅课程顶部的链接)。
就是这样,无需担心手动添加模块或跟踪应用程序架构中的更改,因为这将使用应用程序自己的引导程序。
有关详细信息,请查看以下链接:
让我知道它是否也为你的案件做了工作。