CakePHPでテスト時にログイン状態をつくる

当たり前の事だけど、$this->Auth->user();とかの情報をテスト時に利用する場合、テスト前にログイン状態を作る必要がある。

例えばこんな感じ。

/**
 * setUp method
 *
 * @return void
 */
public function setUp() {
    parent::setUp();

    $testData = array(
        'AdminAccount' => array (
            'user_id' => 'hogehoge' ,
            'pw'      => 'hogehoge'
        )
    );
    $this->testAction( '/admin/account/login/', array ('data' => $testData, 'method' => 'post'));
}

/**
 * tearDown method
 *
 * @return void
 */
public function tearDown() {
    $this->testAction( '/admin/account/logout/');
    parent::tearDown();
}

ここで一つ注意する事は、Sessionを利用するテストの場合(今回の場合だとログイン周りのテスト)、webからしかテストが成功しないということ。(シェルだとCookieとか付与されないしね)
だからJenkinsとかでテストを自動化するためには、ここら辺のテストをどうにかする必要がある。
ただどうするかはまだ考え中。。。