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

0

エラーが発生していません...ページが意図したとおりにリダイレクトされないため、テストが失敗しています。

リダイレクト方法については、この質問を参照してください

Zend フレームワークの URL リダイレクト

Zendマニュアルによると:

その性質上、リダイレクタ アクション ヘルパー プラグインはリダイレクトを発行してから終了します。終了呼び出しを発行するアプリケーションの部分をテストすることはできないため、Zend_Test_PHPUnit_ControllerTestCase はリダイレクタの終了部分を自動的に無効にします。これは、テストの動作が実際のアプリケーションと異なる可能性があるためです。コントローラーを適切にテストできるようにするために、ユーザーを別のページにリダイレクトする必要がある場合は、リダイレクターを使用してください。

回線$this->_redirect('/index/');が問題を引き起こしています。

于 2013-05-30T14:31:47.873 に答える