7

PHPUnit を使用して、同じスタブ/モックから複数の期待値を取得するにはどうすればよいでしょうか。

たとえば、モックがdisplay()呼び出されたメソッドを持ち、NULL を返すことをテストしたいとします。process()メソッドが呼び出されることもテストしたいと思います。

実際、私のテストはtestProcessIsCalledIfDisplayReturnNull().

だから私は同じモックオブジェクトに2つの期待を設定する必要があり、マニュアルはそれについて本当に役に立ちません:(

4

2 に答える 2

10

知っている場合、そのメソッドは一度呼び出されます。expects()で$ this-> once()を使用します。それ以外の場合は、$ this-> any()を使用します。

$mock = $this->getMock('nameOfTheClass', array('firstMethod','secondMethod','thirdMethod'));
$mock->expects($this->once())
     ->method('firstMethod')
     ->will($this->returnValue('value'));
$mock->expects($this->once())
     ->method('secondMethod')
     ->will($this->returnValue('value'));
$mock->expects($this->once())
     ->method('thirdMethod')
     ->will($this->returnValue('value'));
于 2011-04-29T17:20:38.790 に答える
6

私はこれを試しましたが、呼び出し順序が良好である限り機能するようです。

$mock = $this->getMock('mockWorker', array('display', 'process'));
$mock->expects($this->exactly(1))
     ->method('display')
     ->will($this->returnValue(null));
$mock->expects($this->exactly(1))
     ->method('process');
于 2011-04-29T17:18:15.407 に答える