Ho un oggetto finto PHPUnit che restituisce 'return value'indipendentemente dai suoi argomenti:
// From inside a test...
$mock = $this->getMock('myObject', 'methodToMock');
$mock->expects($this->any))
->method('methodToMock')
->will($this->returnValue('return value'));
Quello che voglio poter fare è restituire un valore diverso in base agli argomenti passati al metodo simulato. Ho provato qualcosa del tipo:
$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"'));
Ma questo fa sì che PHPUnit si lamenti se il mock non viene chiamato con l'argomento 'two', quindi presumo che la definizione di methodToMock('two')sovrascriva la definizione del primo.
Quindi la mia domanda è: c'è un modo per ottenere un oggetto simulato PHPUnit per restituire un valore diverso in base ai suoi argomenti? E se sì, come?