如何在zend框架中测试表单? 我的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 />')))
));
}
}
我该如何测试?任何人都可以提供一些资源吗?
答案 0 :(得分:2)
我想不出任何资源,但我可以举一个例子说明我会怎么做。
因此,我将创建一个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
是您表单的simplified版本。我需要简化它,因为我没有你的自定义装饰器,我无法运行测试。我可以看到我用于此示例的设置here(以及我的所有其他测试)。
希望这会对你有所帮助。