Zend Testで使用すると、コントローラープラグインのリダイレクトに問題があるのではないかと疑っています。
http://pastie.org/1422639のようなコントローラープラグインがあります。デバッグ用にechoステートメントを配置しました。ユーザーがログインしていない場合にログインにリダイレクトするためのコードがあります
if (!$auth->hasIdentity()) {
echo 'no id, ';
// redirect to login page
$req->setDispatched(true);
$redirector = Zend_Controller_Action_HelperBroker::getStaticHelper('redirector');echo 'got redir, ';
$redirector->gotoUrl('/auth/login?returnUrl=' . urlencode($req->getRequestUri()));echo 'redirecting, ';
} ...
ユニットをテストするとき、例えば
$this->dispatch('/projects');
私が得た出力は
プロジェクト(プロジェクトページ/コントローラーをリクエストしました)、IDなし(OK、ログインしていません)、redir(リダイレクターを取得しました)、リダイレクト(リダイレクトしているようです...)、エラー(しかしエラーコントローラに到達しました)リソースがありません、
エラーコントローラにたどり着いた理由は、まだプロジェクト/インデックスページにたどり着いたからです。インデックスアクションでは、ユーザーがログインしていると想定しました。しかし、ログインしているユーザーを取得しようとすると
$user = \Zend_Auth::getInstance()->getIdentity();
失敗します...
Zend Testでリダイレクタを機能させるにはどうすればよいですか?それとも、リダイレクタの問題ではないでしょうか?