CakePHP1.3のtestActionでモック、スタブを使う。
前回のエントリーでtestActionが使えないと言っていたのですが、案の定僕のやり方が間違っていました。
testActionでモック、スタブが使えるようになったので一応紹介しておきます。
やりたいことは前回と同じで特定のコンポーネントをスタブにします。
コード
<?php /* Posts Test cases generated on: 2010-07-13 20:07:58 : 1279019398*/ App::import('Controller', 'Posts'); class TestPostsController extends PostsController { function beforeFilter(){ #ここでコンポーネントをスタブ Stub::generate('BookmarkComponent'); $this->Bookmark = new MockBookmarkComponent(); $this->Bookmark->setReturnValue('num', 42); parent::beforeFilter(); } function redirect($url, $status = null, $exit = true) { $this->redirectUrl = $url; } } class PostsControllerTestCase extends CakeTestCase { var $fixtures = array('app.post'); function startTest() { $this->Posts =& new TestPostsController(); $this->Posts->constructClasses(); } function endTest() { unset($this->Posts); ClassRegistry::flush(); } function testIndex() { #testAction先を/test_postsとすることで上で定義したコントローラが呼べる $result = $this->testAction('/test_posts/index',array('return'=>'view')); $this->assertPattern("/42/",$result,"ブックマーク数は42である"); } } ?>