0

我正在尝试测试我的登录控制器,这就是我到目前为止所写的:

public function testValidUserIsredirectedToIndex()
{

$this->dispatch('/index/logincra');
$this->resetResponse();
$this->request->setPost(array(
    'login' => 'aymeric',
    'password' => 'toto2016',
));
$this->request->setMethod('POST');
$this->assertRedirectTo('/index');
}

/index/logincra 是我要测试的 url,index 是我的控制器的名称,而 logincra 是我的操作名称,即:

 public function logincraAction()
    {
        if($this->getRequest()->isPost()){
            $data = $this->getRequest()->getPost(); // Recupere les posts
            if(!empty($data['login']) && !empty($data['password'])){
                $oLdap = new Mediagong_Ldap_Connect($data['login'], $data['password']);
                $oLdap->setLogin($data['login']);
                $oLdap->setPassword($data['password']);
                $oLdap->getUserInfos();
                if($oLdap->isLoggin()){
                    $user = User::getUserByLogin($oLdap->getUserName());
                    if(!empty($user)){
                        if($user->is_cra){
                            $frontLogin = new Zend_Session_Namespace('front');
                            $frontLogin->user = $user->id_user;
                            $frontLogin->setExpirationSeconds(1800);
                            $this->_redirect('/index/');
                        }else{
                            $this->view->information = 'Vous n\'êtes pas autorisé à accéder à cette interface';                        
                        }
                    }else{
                        $this->view->information = 'Compte CRA inactif, veuillez vous retourner vers Damien...';
                    }
                }else{
                    $this->view->information = 'Mauvais login ou mot de passe';      
                }
            }else{
                $this->view->information = 'Veuillez saisir tous les champs';
            }
        }    
    }

如果登录名和密码正确(例如 aymeric/toto2016),我想测试用户是否正确转发到 /index url。

到目前为止,我有错误:

断言响应重定向到“/index”失败

在此先感谢您的帮助

4

2 回答 2

2

请查看Zend_test 参考。我想它会帮助你。

于 2013-05-30T14:52:35.693 回答
0

您没有收到错误...您的测试失败,因为页面未按您的预期重定向。

请参阅此问题以了解如何重定向

Zend 框架 url 重定向

根据 Zend 手册:

由于其性质,重定向器操作助手插件发出重定向然后退出。因为您无法测试发出退出调用的应用程序部分,所以 Zend_Test_PHPUnit_ControllerTestCase 自动禁用重定向器的退出部分,因为它可能导致测试行为与实际应用程序不同。为确保您的控制器可以正确测试,请在需要将用户重定向到不同页面时使用重定向器:

这条线$this->_redirect('/index/');给你带来了麻烦。

于 2013-05-30T14:31:47.873 回答