Zend RedirectorアクションヘルパーのセットRedirectURLメソッドを使用する
-
28-09-2020 - |
質問
SimpleTestでZend_Controller_actionのいくつかの拡張をテストしています。リダイレクタアクションヘルパーの設定メソッドを使用してリダイレクトURLを設定してから、リダイレクタのRedirectAndExit()メソッドを使用して実際にプロセスの後で実際にリダイレクトします。このプロセスは、マニュアルの読みやアクションコントローラ、リダイレクタ、応答クラスのコードを見ることから予想されるように機能していないようです。
これは私が書いたままの単なる方法です:
public function testSetGoToUrl() {
$request = new Zend_Controller_Request_Http();
$response = new Zend_Controller_Response_Http();
$controller = new App_Zend_Controller_Action($request, $response, array());
$controller->getHelper('redirector')->setGoToUrl('/');
}
.
App_zend_Controller_actionクラスは、抽象クラスZend_Controller_actionの単なる具体的な拡張です。ここでやっているのは、コントローラをインスタンス化し、リダイレクトURLを設定しています。 SimpleTestのレポーターは予想どおりにヘッダーを送信しています。しかし、このテスト方法は「ヘッダーを送信された」例外を生成し、理由は理解していません。私はこの状況で呼び出されているrun()またはdispatch()メソッドを認識していません。
解決
テスト中は、Zend_Controller_Response_HttpTestCase
とZend_Controller_Request_HttpTestCase
を使用する必要があります。
Zend_Controller_Response_HttpTestCase::sendHeaders()
Real header()
ステートメントを実行する代わりに送信されるすべてのヘッダーの配列を返します。
これらはZend_Test_PHPUnit_ControllerTestCase
でも使用されています。