2017-09-05 12 views

答えて

1

は、私が(from hereをとら)チェーンの呼び出しのための良い例があるかもしれないと思う

あなたはすべての単一の呼び出しのために別々のモックを作成するに終わるだろう伝統的な方法でそれをモックとしたい場合は

$this->someService 
    ->getSomething() 
    ->getSomethingElse() 
    ->doMore($x) 
    ->proceed() 
    ->toGetTheFinalCall($y); 
! 1つの行を模擬するだけのコードの画面の半分に簡単に成長します!しかし、そこには道があるのを待つ!

$value = 'some mocked value';  

$mock = $this->getMock('ServiceClass', array('getSomething', 
     'getSomethingElse','doMore','proceed','toGetTheFinalCall'), array(), '', false); 

$mock->expects($this->any())->method('toGetTheFinalCall') 
     ->will($this->returnValue($value)); 

$mock->expects($this->any())->method($this->anything()) 
     ->will($this->returnValue($mock)); 

このようにして、モックを連続して呼び出すと、それ自体が返されるので、何度でも何度でも連鎖できます。メソッドが希望の順序で呼び出されているかどうかを確認することはありませんが、実際には問題はありません。最終的には、呼び出しの結果で何かをするコードをテストすることが必要です。

+0

aaaah、良い、良いです。しかし、その場合私の推測では、 '' ' - > expects($ this-> any())' 'を単に削除することができるということです。彼らはちょうど奇妙に見える –

+0

あなたは正しいです。しかし、ドキュメンテーション目的のためにそこにあるかもしれません:私たちは明示的に「必要な回数だけ呼び出すことができます」と言います。明示的なものは暗黙的なものよりも優れています。 :)もちろん、それは味の問題です。 –

+0

ええ、私もあなたのポイントが好きです。ありがとうたくさん:) –

関連する問題