Ich habe ein PHPUnit-Scheinobjekt, das 'return value'
unabhängig von seinen Argumenten zurückgibt :
// From inside a test...
$mock = $this->getMock('myObject', 'methodToMock');
$mock->expects($this->any))
->method('methodToMock')
->will($this->returnValue('return value'));
Ich möchte in der Lage sein, einen anderen Wert zurückzugeben, der auf den an die Mock-Methode übergebenen Argumenten basiert. Ich habe so etwas versucht wie:
$mock = $this->getMock('myObject', 'methodToMock');
// methodToMock('one')
$mock->expects($this->any))
->method('methodToMock')
->with($this->equalTo('one'))
->will($this->returnValue('method called with argument "one"'));
// methodToMock('two')
$mock->expects($this->any))
->method('methodToMock')
->with($this->equalTo('two'))
->will($this->returnValue('method called with argument "two"'));
Dies führt jedoch dazu, dass sich PHPUnit beschwert, wenn der Mock nicht mit dem Argument aufgerufen wird. Daher gehe 'two'
ich davon aus, dass die Definition von methodToMock('two')
die Definition der ersten überschreibt.
Meine Frage lautet also: Gibt es eine Möglichkeit, ein PHPUnit-Scheinobjekt dazu zu bringen, basierend auf seinen Argumenten einen anderen Wert zurückzugeben? Und wenn ja, wie?