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();
}
あなたのtestAction()メソッドはどこですか?コード? – thecodeparadox
テストケースの残りの部分(親クラス、モック、インポートなど)を確認するとよいでしょう。 – jeremyharris
私は、CakePHPで定義されている、Testsで動作するメソッドについてはわかりません。それは動作するはずです:http://book.cakephp.org/2.0/ja/development/testing.html#testing-controllers – Alvaro