2012-04-12 14 views
0

Cake bakeコマンドを使用してコントローラのテストを作成しました。テストが動作しないCakePHP2.0

コントローラの今、私は機能をテストする「インデックス」とそれのために私はこれを実行します。

public function testIndex() { 

    echo "printed"; 

    $result = $this->testAction("/comments/1"); 

    echo "not printed"; 

} 

1はPARAM、コメントは記事のIDです。とにかく、コントローラーは完璧に機能し、問題はありません。

ご覧のとおり、testActionメソッドを呼び出した後、テストがクラッシュします。 (2番目のエコーは表示されません)

コントローラーで呼び出されたアクションにモデルが呼び出された場合、testAction呼び出しは機能しません。しかし、テストするアクションがどのモデルにも呼び出されなければ、それは完全に機能します。

ここではどのような処理が行われますか? ところで、両方のデータベース、defaultとtestにはデータが入っているので、データベースにも問題はありません。

ありがとうございました。

UPDATE: ここにあなたがケーキ焼くコマンドによって生成されたtestControllerの残りの部分を持っている:あなたは、コントローラをテストしているとき

<?php 
/* Comments Test cases generated on: 2012-04-12 11:49:17 : 1334224157*/ 
App::uses('CommentsController', 'Controller'); 

/** 
* TestCommentsController * 
*/ 
class TestCommentsController extends CommentsController { 
/** 
* Auto render 
* 
* @var boolean 
*/ 
    public $autoRender = false; 

/** 
* Redirect action 
* 
* @param mixed $url 
* @param mixed $status 
* @param boolean $exit 
* @return void 
*/ 
    public function redirect($url, $status = null, $exit = true) { 
     $this->redirectUrl = $url; 
    } 
} 

/** 
* CommentsController Test Case 
* 
*/ 
class CommentsControllerTestCase extends CakeTestCase { 
/** 
* Fixtures 
* 
* @var array 
*/ 
    public $fixtures = array('app.comment'); 

/** 
* setUp method 
* 
* @return void 
*/ 
    public function setUp() { 
     parent::setUp(); 

     $this->Comments = new TestCommentsController(); 
     $this->Comments->constructClasses(); 

    } 

/** 
* tearDown method 
* 
* @return void 
*/ 
    public function tearDown() { 
     unset($this->Comments); 


     parent::tearDown(); 
    } 
+0

あなたのtestAction()メソッドはどこですか?コード? – thecodeparadox

+0

テストケースの残りの部分(親クラス、モック、インポートなど)を確認するとよいでしょう。 – jeremyharris

+0

私は、CakePHPで定義されている、Testsで動作するメソッドについてはわかりません。それは動作するはずです:http://book.cakephp.org/2.0/ja/development/testing.html#testing-controllers – Alvaro

答えて

1

、を活用するためにControllerTestCaseによってテストケースクラスを拡張することを確認してくださいtestAction()方法。

関連する問題