使用phpunit在zf2中进行表单验证

时间:2013-10-30 20:12:21

标签: zend-framework2 phpunit

我正在尝试为使用ZF2编写的表单发布一个PHPunit测试。我想测试的Action是,

public function resetAction() {
    try {
        $resetForm = $this->getServiceLocator()->get('Login\Model\ResetForm');
        $message = $errmessage = null;
        if ($this->getRequest()->isPost()) {
            $resetForm->setInputFilter($resetForm->getInputFilter());
            $resetForm->setData($this->getRequest()->getPost());
            if ($resetForm->isValid()) {
                $signInService = $this->getServiceLocator()->get('Login\Model\SignInService');
                /* Genereate a unique token to put to the tAccounts table to reset the password */
                $serverUrl = $this->getRequest()->getUri()->getScheme() . '://' . $this->getRequest()->getUri()->getHost();
                /* Complete the URL, this need to change */
                $serverUrl = $serverUrl . '/basezf2/public';
                /* Initiate the reset password send email notification process */
                if ($signInService->sendPasswordResetNotification($resetForm->getData(), $serverUrl)) {
                    $message = 'Email has been send with the password reset link';
                } else {
                    $errmessage = 'No account found for given email address';
                }
            }
        }
        return new ViewModel(array('resetForm' => $resetForm, 'message' => $message, 'errmessage' => $errmessage));
    } catch (\Exception $e) {
        $log = $this->getServiceLocator()->get('Error\Log');
        $log->log(Logger::ERR, $e->getMessage());
    }
}

我的联合测试如下

public function testresetActionPost() {
    date_default_timezone_set('US/Eastern');
    $this->dispatch('/login/reset', 'POST', array('email' => 'notEmail'));
    $this->assertResponseStatusCode(200);
}

此测试如您所见,我没有发送正确的电子邮件地址,当我通过网络执行此操作时,表单验证失败并执行它想要执行的所有操作。如何在我的测试中完成这项工作。

我正在使用Zf2 + PHPunit 3.7

0 个答案:

没有答案