2012-04-17 14 views
0

モデルのないベンダークラスを使用しているので、私のメソッドの1つをテストするのに苦労しています。CakePHPでコントローラーメソッドを嘲笑します

さて、私の望むものを返す方法が欲しいということです。 方法を嘲笑することは、私が望むものを返すように言われています。

たとえば、私が "foo()"メソッドを呼び出すと、私はそれが常に真実を返すようにします。

どうすればいいですか? CakePHPの料理で、私はこれを見つけることができます:それは私が欲しいものを返すようにする方法方法 しかし...:

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

をので、私は拳オプションを使用する必要があります必要がありますね?

ありがとうございました。

+0

それは何が起こっているのか、あなたが達成しようとしているもので、すべての私にははっきりしていません間違って、あなたがすでに試したこと...私たちがあなたを助けることができるようにあなたの質問を明確にしてください。 – Joep

+0

私は質問を更新しました。誰かが、あなたが望むものを返すことができる方法を嘲笑すると私に言った。私はコントローラからのメソッドが、私がテストから呼び出すときに真を返すようにしたい。それを嘲笑することは可能でしょうか? – Alvaro

+0

@jeremyharris、もう一つの質問はちょっと違っていて、私はあなたの答えをよく理解していませんでした。この場合、私ははるかに明確かつ有用であることがわかります。ありがとう!! – Alvaro

答えて

4

私はこの質問であなたを与えた答えを参照してください:モックの詳細については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

+0

ありがとう@jeremyharris !!これはまさに私が探していたものでした!私が望むものを返すメソッド(コンポーネントまたはモデルではない)。 – Alvaro