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?

È stato utile?

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").

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top