削除アクションのテストは、他のアクションのテストと同じです。あなたのテストケースは、このように見えるかもしれません。
// notice it extends ControllerTestCase
class PostsControllerTest extends ControllerTestCase {
function testDelete() {
$this->testAction('/posts/delete/1');
$results = $this->headers['Location'];
// your OP code redirected them to a view, which I assume is wrong
// because the item would be deleted
$expected = '/posts/index';
// check redirect
$this->assertEquals($results, $expected);
// check that it was deleted
$this->Posts->Post->id = 1;
$this->assertFalse($this->Posts->Post->exists());
}
}
もちろん、これは明らかに明らかです。また、セッションをチェックして、例外が予想されるテストを作成することもできます。それでもまだテストケースの終わりに達していない場合や、続けている場合他のものはにあります。
generate
メソッドをControllerTestCase
に設定すると、簡単なモックを生成できます。
function testDelete() {
$Posts = $this->generate('Posts', array(
'components' => array(
'Email' => array('send'),
'Session'
)
));
// set ControllerTestCase to use this mock
$this->controller = $Posts;
$this->testAction('/posts/some_action_that_sends_email');
}
上記は、テスト中に使用するPostsControllerのモックを最初に生成します。また、EmailComponentのsend()
メソッドと、SessionComponent全体をモックします。
モックの詳細については
:$idPost
が定義されていないので、あなたがエラーを持っているhttp://book.cakephp.org/2.0/en/development/testing.html#using-mocks-with-testaction
空のビューエラーが発生しているのだろうかと思います。とにかく削除ビューがないので、この場合はコントローラ上で 'render'関数を試してみることができます。 – jeremyharris
それを嘲笑することはどういう意味ですか?そして、ええ、いいえ、リダイレクトは正常に動作し、ビューアクションは空ではありません。 – Alvaro
Mockingは、特定のメソッドが必要なものを返す場所をテストする手順です。例えば、 'CakeRequest :: send()'は嘲笑され、何もしないように指示され、ヘッダを送信しません。模倣した方法に何を期待するか、またどのように対応するかを教えてもらえます(http://www.phpunit.de/manual/3.0/en/mock-objects.htmlを参照)。 Cakeを簡単に嘲笑するには、http://book.cakephp.org/2.0/ja/development/testing.html#using-mocks-with-testactionをご覧ください。'ControllerTestCase :: testAction()'はこれを自動的に行います。 – jeremyharris