私は Cake 2.2 でアプリを開発しており、現在いくつかの単体テストを書いています。モデル テストは問題なく動作しています。コントローラー テスト全般に問題があります。
状況: - ほとんどのアクションでユーザー ログインが必要です - カスタム コンポーネントとベンダー ライブラリがあります - すべてのテーブルにフィクスチャがあります
問題: - 多くのアクションは "$this->Auth->user()" メソッドを使用してユーザー データを取得します - そのアクションのテストを作成すると、ユーザー データは (明らかに) 存在しません
私の(機能していない)解決策:-認証コンポーネントをモックしようとしたため、ユーザーメソッドが含まれ、常にユーザーデータを含む静的配列が返されますが、null が返されます。コードは次のとおりです。
$Days = $this->generate('Days', array('components' => 'Auth'));
$Days->Auth->expects($this->once())->method('user')->will($this->returnValue(array(..userdata etc.)));
$result = $this->testAction('/days/settings');
メソッドが呼び出されなかったと言い続けます (ただし、Days コントローラー内の設定メソッドはそれを 1 回だけ呼び出します)。モックアップの何が問題になっていますか? うーん..
どんな助けでも大歓迎です!
-編集- テストされているメソッドのコード:
public function myDays()
{
$user = $this->Auth->user();
$days = $this->Day->find('all', array('conditions' => array('user_id' => $user['id'], 'active' => 1)));
$this->set('days', $days);
}