J'ai rencontré un problème étrange avec les objets fantaisie de PHPUnit. J'ai une méthode qui devrait être appelée deux fois, donc j'utilise le matcheur "at". Cela fonctionne la première fois que la méthode est appelée, mais pour une raison quelconque, la deuxième fois qu'elle est appelée, j'obtiens "Mocked method does not exist". J'ai déjà utilisé le matcheur "at" et je n'ai jamais rencontré ce problème.
Mon code ressemble à quelque chose comme :
class MyTest extends PHPUnit_Framework_TestCase
{
...
public function testThis()
{
$mock = $this->getMock('MyClass', array('exists', 'another_method', '...'));
$mock->expects($this->at(0))
->method('exists')
->with($this->equalTo('foo'))
->will($this->returnValue(true));
$mock->expects($this->at(1))
->method('exists')
->with($this->equalTo('bar'))
->will($this->returnValue(false));
}
...
}
Lorsque j'exécute le test, j'obtiens :
Expectation failed for method name is equal to <string:exists> when invoked at sequence index 1.
Mocked method does not exist.
Si je supprime le second matcheur, je n'obtiens pas l'erreur.
Quelqu'un a-t-il déjà rencontré ce problème ?
Merci de votre attention !