CakePHP1.3でredirectを含むコントローラーのテスト

コントローラーの応答にリダイレクトが含まれるとtestActionを実行したときにテストケースが終了してしまうという落とし穴がある。対処方法がリンク先にいろいろ書いてあるが、とりあえず簡単な対処方法が見つかった。

testActionで呼ぶURL部分でcake bakeで作成されたテストケースのTest◯◯Controllerクラスを呼ぶように書き換える。
変更前: $result = $this->testAction('/admin/categories/xxxx');
変更後: $result = $this->testAction('/admin/test_categories/xxxx');

#categories_controller.test.php

class TestCategoriesController extends CategoriesController {
var $autoRender = false;

function redirect($url, $status = null, $exit = true) {
$this->redirectUrl = $url;
}
}

class CategoriesControllerTestCase extends CakeTestCase {
<省略>

function testSomeCase() {
$result = $this->testAction('/admin/test_categories/xxxx');
}

リダイレクトを前提とするテストケースでtestActionに'return' => 'var'を設定するとエラーになる。ビューが呼ばれないのにビューの変数を読み込もうとしてしまったのが原因みたい。

Trackback URL for this post:

http://www.mrk.jp/trackback/603

コメント

新しいコメントの投稿

このフィールドの内容は非公開にされ、公表されることはありません。
  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。
  • 使用できるHTMLタグ: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • 行と段落は自動的に折り返されます。

書式オプションに関するより詳しい情報...