Это очень специфический вопрос, и я много гуглил для потенциального решения, но ничего, что указывало бы мне в правильном направлении. Я написал Zend_Controller_Action_Helper, чтобы помочь мне обрабатывать некоторые формы в моем приложении. Теперь в приложении он работает нормально, но, похоже, сломал мои тесты. Если я закомментирую строки, которые добавляют помощника в брокер, все будет работать нормально, но это приведет к поражению объекта. Ошибка, которую я получаю,
Fatal error: Class 'PHPUnit_Framework_Error_Notice' not found in /Users/chris/NetBeansProjects/myProject/library/ProcessForm.php on line 25
Чего я не понимаю, так это почему он выдает эту ошибку в строке 25, которая специально
public function processForm($aParam)
Поэтому я полагаю, что должен вставить код, чтобы показать вам часть приложения. Я добавляю этот помощник в начальную загрузку моего приложения вот так.
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initHelpers()
{
// If I comment out these lines it all works
require_once 'ProcessForm.php';
Zend_Controller_Action_HelperBroker::addHelper(
new ProcessForm()
);
}
}
Мой загрузочный файл PHPUnit выглядит так
require_once 'Zend/Application.php';
require_once 'Zend/Test/PHPUnit/ControllerTestCase.php';
abstract class ControllerTestCase extends Zend_Test_PHPUnit_ControllerTestCase
{
protected $application;
public function setUp()
{
$this->bootstrap = array($this, 'appBootstrap');
parent::setUp();
$this->getFrontController()->setParam('bootstrap', $this->application->getBootstrap());
}
public function appBootstrap()
{
$this->application = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini');
$this->application->bootstrap();
}
}
Фактический помощник выглядит так
class ProcessForm extends Zend_Controller_Action_Helper_Abstract
{
/**
* @var Zend_Loader_PluginLoader
*/
public $pluginLoader;
/**
* Constructor: initialize plugin loader
*
* @return void
*/
public function __construct()
{
$this->pluginLoader = new Zend_Loader_PluginLoader();
}
public function processForm($aParam)
{
}
public function direct($aParam)
{
return $this->processForm($aParam);
}
}
PHPUnit_Framework_Error_Notice
, вы проверили, присутствует ли файл? ( Zend/Test/PHPUnit/Framework/Error/Notice.php), и ошибка, похоже, исходит от конструктора ProcessForm. Так что, может быть, в другом классе$this->pluginLoader = new Zend_Loader_PluginLoader();
- person Shikiryu   schedule 21.10.2010