Кто-нибудь может предоставить какой-то ресурс о модульном тестировании форм в Zend Framework? - PullRequest
3 голосов
/ 27 апреля 2011

Как я могу проверить формы в Zend Framework?У меня есть форма входа в мой Zend-проект, Login.php:

<?php
class DEMO_Form_Login extends Zend_Form {

    public function init() {
        $this
            ->setMethod('post')
            ->addElementPrefixPaths(array(
                'decorator' => array('DEMO_Decorator' => '../application/decorators'),
            ));

        $this
        ->addElement('text', 'username', array(
            'label' => _T('USERNAME'),
            'required' => true,
            'value' => '',
            'filters'    => array('StringTrim'),
            'decorators' => array('ViewHelper')
            ))
        ->addElement('password', 'password', array(
            'label' => _T('PASSWORD'),
            'required' => true,
            'value' => '',
            'decorators' => array('ViewHelper')
            ))
        ->addElement('submit', 'submit', array(
            'label' => _T('LOG_INTO'),
            'ignore' => true,
            'decorators' => array(
                array('Submit', array('separator'=>'<br />')))  
            ));
    }

}

Как я могу проверить это?Кто-нибудь может предоставить какой-нибудь ресурс об этом?

1 Ответ

2 голосов
/ 27 апреля 2011

Я не могу придумать ни одного ресурса, но могу привести один пример того, как я бы это сделал.

Итак, я бы создал класс FormTestCase следующим образом:

class FormTestCase extends PHPUnit_Framework_TestCase {

    private $_form;

    public function setUp() {
        parent::setUp();
    }

}

Тогда каждая форма может быть проверена следующим образом:

class DemoFormTest extends FormTestCase {

    public function setUp() {
        parent::setUp();
        $this->_form = new My_Form_Demo();
    }

    public function testCorrectData() {
        $mockInputData = array(
            'username' => 'somename',
            'password' => 'somepass',
            'submit' => 'LOG_INTO'
        );

        $this->assertTrue($this->_form->isValid($mockInputData));
    }

     public function testInCorrectData() {
        $mockInputData = array(
            'username' => 'somename',   
            // password not given
            'submit' => 'LOG_INTO'
        );

        $this->assertFalse($this->_form->isValid($mockInputData));
    }

    // some other tests
}

В приведенном выше примере My_Form_Demo - это упрощенная версия вашей формы. Мне нужно было упростить его, потому что у меня нет ваших пользовательских декораторов, и я не смог запустить тест. Установку, которую я использовал для этого примера, можно увидеть здесь (вместе со всеми другими моими тестами).

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...