2

Cakephp でコントローラーのテスト ケースを作成しようとしています。これまでのところ、コントローラーをモックし、コントローラー関数で使用される認証コンポーネントを含めることができました。問題は、staticExpects を 1 回しか呼び出せないように見えることです。つまり、1 つの関数呼び出しに対してのみ戻り値を定義できます。それは望ましくありません。同じテスト ケース内で staticExpects を複数回呼び出す必要があります。

これが私のコードの一部です。

$this->TasksController = $this->generate('Tasks', array(
'components' => array('Session','Auth' => array('User'), ) ));

  $this->TasksController->Auth->staticExpects($this->any())
    ->method('User')
    ->with('userID')
    ->will($this->returnValue(224));
     $this->TasksController->Auth->staticExpects($this->any())
    ->method('User')
    ->with('accID')
    ->will($this->returnValue('some ID here'));

これを実行してテストを実行するたびに、このエラーが発生します

メソッド名の期待値が 0 回以上呼び出されたときと等しい 呼び出しのパラメータ 0 AuthComponent::user('userID') が期待値と一致しません。2 つの文字列が等しいというアサートに失敗しました。

助けてください :)

4

1 に答える 1

1

$ this-> at(index)を使用して、静的メソッドがいつ呼び出されるかを指定する必要があります。

$this->TasksController->Auth->staticExpects($this->at(1))
    ->method('user')
    ->with('userID')
    ->will($this->returnValue(224));

$this->TasksController->Auth->staticExpects($this->at(2))
    ->method('user')
    ->with('accID')
    ->will($this->returnValue('some ID here'));

それらがいつ呼び出されるかわからない場合は、エラーメッセージが呼び出されるまで、各期待値を1つずつ試してください。

--- Expected
+++ Actual
@@ @@
-'userID'
+'accID'

最後に、正しいメソッド名は「User」ではなく「user」です。

于 2012-10-10T08:07:27.733 に答える