Come testare le mie forme in Zend Framework 1.8+?
-
20-09-2019 - |
Domanda
Così ho creato il test nei miei ZF 1.9.5 applicazione grazie a questo tutorial, sono in grado di testare le mie controllori, ora voglio creare un test per un modulo. Tuttavia, sto avendo il problema che PHPUnit non riesce a trovare la mia forma.
Fatal error: Class 'Default_Form_AccountProfile' not found
Mi rivolgo PHPUnit_Framework_TestCase
invece di Zend_Test_PHPUnit_ControllerTestCase
dato che non è un controller. È che la cosa giusta da fare? Qui è la mia prova:
<?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');
}
}
Che cosa sto facendo di sbagliato? Quale sarebbe il modo corretto per testare un form in Zend Framework?
Soluzione
La soluzione più semplice al tuo problema è quello di 'require_once' il file php in cui il modulo si trova all'inizio di questo file (o prima di chiamare nuova Default_Form ...).
A proposito, c'è un motivo specifico per cui stai testando il comportamento predefinito del Zend_Form? I test per Zend_Form sono già scritti e si può ottenere loro se si scarica la versione completa di ZF. Se il modulo che si sta utilizzando ha il proprio, i metodi specifici, o sovrascrive alcuni dei metodi Zend_Forms che ha senso per testare quelli.
Altri suggerimenti
Se si guarda nel tuo Application.ini, guardare la linea che indica "appnamespace" che il valore predefinito è "Applicazione" se si sta utilizzando Zend_Tool per creare lo scheletro Zend Framework.
Al fine di evitare che questo errore si verifichi, si sia modificare questa impostazione per "Default" o si rinomina tutti default_ * classi a Application_ * (in questo caso particolare, vorrebbe dire si rinomina "Default_Form_AccountProfile" in "Application_Form_AccountProfile").