Cómo probar mis formas en Zend Framework 1.8+?
-
20-09-2019 - |
Pregunta
Así que he creado en mi solicitud de pruebas ZF 1.9.5 gracias a este tutorial , soy capaz de poner a prueba mis controladores, ahora quiero crear una prueba para una forma. Sin embargo, estoy teniendo el problema de que PHPUnit no puede encontrar mi forma.
Fatal error: Class 'Default_Form_AccountProfile' not found
I extiendo PHPUnit_Framework_TestCase
en lugar de Zend_Test_PHPUnit_ControllerTestCase
ya que no es un controlador. Es que lo que hay que hacer? Aquí está mi prueba:
<?php
class AccountProfileTest extends PHPUnit_Framework_TestCase
{
public function testPopulate()
{
$form = new Default_Form_AccountProfile();
$user = array(
'firstName' => 'Joe',
'lastName' => 'Schmoe'
);
$form->populate($user);
$this->assertEquals($form->getElement('firstName')->getValue(), 'Joe');
$this->assertEquals($form->getElement('lastName')->getValue(), 'Schmoe');
}
}
¿Qué estoy haciendo mal? ¿Cuál sería la forma correcta de probar un formulario en Zend Framework?
Solución
La solución más sencilla a su problema es 'require_once' el archivo PHP donde se encuentra su forma en el comienzo de este archivo (o antes de llamar a la nueva Default_Form ...).
Por cierto, hay una razón específica por la cual estás probando el comportamiento por defecto de la Zend_Form? Las pruebas de Zend_Form ya están escritos y se puede conseguir si se descarga la versión completa de ZF. Si el formulario que está utilizando tiene sus propios métodos, específicos, o es sobrescribir algunos de los métodos Zend_Forms de lo que tiene sentido para probar a los.
Otros consejos
Si nos fijamos en su application.ini, mirar la línea que dice "appnamespace" que por defecto "Aplicación" Si está utilizando Zend_Tool para crear su esqueleto Zend Framework.
Con el fin de evitar que este error se produzca, o bien cambiar este ajuste a "defecto" o cambia el nombre de todos los default_ * clases a Application_ * (en este caso particular que significaría cambiar el nombre de "Default_Form_AccountProfile" en "Application_Form_AccountProfile").