5

私は 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);
}
4

1 に答える 1

1

たぶん使用:

$Days->Auth->staticExpects(

user() は静的メソッドであるためです。

于 2012-10-11T06:33:01.447 に答える