0

モデルのないベンダー クラスを使用しているため、メソッドの 1 つをテストするのに問題があります。

問題は、そのメソッドが私が望むものを返すことです。メソッドをモックすることは、メソッドが必要なものを返すようにすることだと言われました。

たとえば、「foo()」メソッドを呼び出すと、常に true が返されるようにします。

どうすればできますか?CakePHPクックブックで私はこれを見つけることができます:

$Posts = $this->generate('Posts', array(
    'methods' => array(
        'isAuthorized'
    ),
    'models' => array(
        'Post' => array('save')
    ),
    'components' => array(
        'RequestHandler' => array('isPut'),
        'Email' => array('send'),
        'Session'
    )
));

だから私は最初のオプションを使用する必要があると思います: method しかし...どうすれば欲しいものを返すことができますか?

ありがとう。

4

1 に答える 1

5

この質問で私があなたに与えた答えを参照してください: How can i test an Add function on CakePHP2.0

$Posts = $this->generate('Posts', array(
    'methods' => array(
        'isAuthorized'
    ),
    'models' => array(
        'Post' => array('save')
    ),
    'components' => array(
        'RequestHandler' => array('isPut'),
        'Email' => array('send'),
        'Session'
    )
));

// tell PHPUnit that `isAuthorized` should return true any time it's called
$Posts
  ->expects($this->any())
  ->method('isAuthorized')
  ->will($this->returnValue(true));
// tell PHPUnit to expect `isPut` once, and to return false
$Posts
  ->RequestHandler
  ->expects($this->once())
  ->method('isPut')
  ->will($this->returnValue(false));

モッキングの詳細については、http ://www.phpunit.de/manual/3.0/en/mock-objects.html を参照してください。

于 2012-04-19T14:48:05.807 に答える