Il s'agit d'une question très spécifique et j'ai beaucoup cherché une solution potentielle mais rien qui me pointe dans la bonne direction. J'ai écrit un Zend_Controller_Action_Helper pour m'aider à traiter certains formulaires dans mon application. Maintenant, dans l'application, cela fonctionne très bien, mais il a l'air d'a cassé mes tests. Si je commente les lignes qui ajoutent l'aide dans le courtier, tout fonctionne bien, mais cela détruit l'objet. L'erreur que je reçois estZend Framework, HelperBroker Test PHPUnit
Fatal error: Class 'PHPUnit_Framework_Error_Notice' not found in /Users/chris/NetBeansProjects/myProject/library/ProcessForm.php on line 25
Ce que je ne comprends pas pourquoi il jette cette erreur sur la ligne 25 qui est spécifiquement
public function processForm($aParam)
Je suppose que je devrais coller un code pour vous montrer une partie de l'application. J'ajoute cette aide dans le bootstrap de mon application comme si ..
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()
);
}
}
Mon PHPUnit fichier d'amorçage ressemble à ceci
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();
}
}
L'aide réelle ressemble à ceci
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);
}
}
2 suggestions: Comme il semble qu'il ne peut pas trouver 'PHPUnit_Framework_Error_Notice', avez-vous vérifié si le fichier est présent? (Zend/Test/PHPUnit/Framework/Erreur/Notice.php) et l'erreur semble provenir du constructeur ProcessForm. Donc, peut-être dans l'autre classe '$ this-> pluginLoader = nouveau Zend_Loader_PluginLoader();' – Shikiryu
Il n'existe pas sur le chemin que vous suggérez mais il fait partie de PHPUnit qui est dans le chemin – Catharsis