at_yasu's blog

ロード的なことを

CakePHP2 で Mock

AuthComponent でどうやって Mock を書くんだろうと今頃になって理解できたのでメモ書き

<?php
class AdminsControllerTest extends ControllerTestCase {
    public function setUp() {
        parent::setUp();
        $Admins = $this->generate('Admins', array('components' => 'Auth'));
        $Admins->constructClasses();

        // 認証まわりをセッションを使わずに mock でごまかす
        $Admins->Auth->expects($this->any())
                    ->method('user')
                    ->will($this->returnValue(array(
                        'id' => '10',
                        'mail' => 'a.yasui+10@gmail.com',
                        'pass' => '<これを知った所で誰も幸せにならない>',
                        'created' => '2013-02-28 16:24:35',
                        'modified' => '2013-02-28 16:26:11'
                    )));
        $Admins->Auth->expects($this->any())
                    ->method('id')
                    ->will($this->returnValue(10));
    }
}

こうやったればいいらしい

参考: http://stackoverflow.com/questions/8216434/write-unit-test-for-a-controller-that-uses-authcomponent-in-cakephp-2