J'ai un PHPUnit objet fantaisie qui renvoie "valeur de retour" n'importe quoi ses arguments:
// From inside a test...
$mock = $this->getMock('myObject', 'methodToMock');
$mock->expects($this->any))
->method('methodToMock')
->will($this->returnValue('return value'));
Ce que je veux être en mesure de faire est de renvoyer une valeur différente en fonction sur les arguments passés à la simulation de la méthode. J'ai essayé quelque chose comme:
$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"'));
Mais cela provoque PHPUnit à se plaindre si la maquette n'est pas appelée avec l'argument "deux", donc je suppose que la définition de methodToMock ("deux"), qui remplace la définition de la première.
Donc ma question est: Est-il possible d'obtenir un PHPUnit objet fantaisie pour renvoyer une valeur différente basée sur ses arguments? Et si oui, comment?
Merci à l'avance!