如何在Zend Framework 1.8+中测试我的表单?

时间:2009-11-18 20:18:31

标签: php zend-framework zend-form phpunit zend-test

所以我通过this tutorial在我的ZF 1.9.5应用程序中设置了测试,我能够测试我的控制器,现在我想为表单创建一个测试。但是,我遇到的问题是PHPUnit无法找到我的表单。

Fatal error: Class 'Default_Form_AccountProfile' not found

我正在扩展PHPUnit_Framework_TestCase而不是Zend_Test_PHPUnit_ControllerTestCase,因为它不是控制器。这是正确的做法吗?这是我的测试:

<?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');
    }
}

我做错了什么?在Zend Framework中测试表单的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

对您的问题最简单的解决方案是'require_once'表单位于此文件开头的php文件(或在调用新的Default_Form之前...)。

顺便说一句,你为什么要测试Zend_Form的默认行为?已经编写了Zend_Form的测试,如果您下载完整版的ZF,则可以获取它们。如果您使用的表单具有自己的特定方法,或者正在覆盖某些Zend_Forms方法而不是测试它们。

答案 1 :(得分:0)

如果您查看application.ini,请查看说明“appnamespace”的行,如果您使用Zend_Tool创建Zend Framework骨架,则默认为“Application”。

为了防止发生此错误,您可以将此设置更改为“Default”,或者将所有Default_ *类重命名为Application_ *(在这种特殊情况下,这意味着您将“Default_Form_AccountProfile”重命名为“Application_Form_AccountProfile”)。