開発メモや日ごろ思ったことなどを書きためるサイトです。サイト管理者は、SE、Web開発者。最近はiPhone、Android開発に興味が出てきてすこしずつ勉強中。
コントローラーの応答にリダイレクトが含まれると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'を設定するとエラーになる。ビューが呼ばれないのにビューの変数を読み込もうとしてしまったのが原因みたい。
コメント
新しいコメントの投稿