CakePHP2のテストではセッションを使う処理はそのままでは動かないので、ログイン状態じゃないと見られないページなど、Authコンポーネントを使う場合はMockにしてテストします。
プロパティで認証ユーザーのデータをセットし、authUserCallback
ファンクションを返すようにすると、Auth->user()
やAuth->user('name')
などが指定した値を返すようにできます。
HomeControllerTest.php
private $__authUser = array(
'id' => 1,
'name' => 'test1',
'role' => 'admin',
'created' => '2015-04-17 10:37:35',
'modified' => '2015-04-17 10:37:35'
);
public function testIndex() {
$Home = $this->generate('Home', array(
'components' => array(
'Auth' => array('user'),
)
));
$Home->Auth->staticExpects($this->any())
->method('user')
->will($this->returnCallback(array($this, 'authUserCallback')));
$this->testAction('/');
}
public function authUserCallback($param) {
if (empty($param)) {
return $this->__authUser;
} else {
return $this->__authUser[$param];
}
}