Tengo un objeto simulado PHPUnit que devuelve 'return value'sin importar sus argumentos:
// From inside a test...
$mock = $this->getMock('myObject', 'methodToMock');
$mock->expects($this->any))
->method('methodToMock')
->will($this->returnValue('return value'));
Lo que quiero poder hacer es devolver un valor diferente en función de los argumentos pasados al método simulado. He intentado algo como:
$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"'));
Pero esto hace que PHPUnit se queje si no se llama al simulacro con el argumento 'two', por lo que supongo que la definición de methodToMock('two')sobrescribe la definición del primero.
Entonces mi pregunta es: ¿hay alguna forma de obtener un objeto simulado PHPUnit para devolver un valor diferente en función de sus argumentos? Y si es así, ¿cómo?