Comment puis-je utiliser l'objet espion chez Phpunit? Vous pouvez appeler objet dans l'imitation et après avoir affirmé combien de fois cela a appelé. C'est espion. P>
Je connais "maquette" en phpunit comme objet stub et objet simulé. p>
3 Réponses :
Vous pouvez affirmer combien de fois une maquette a été convoquée avec PHPUnit lors du fait de
$mock = $this->getMock('SomeClass'); $mock->expects($this->exactly(5)) ->method('someMethod') ->with( $this->equalTo('foo'), // arg1 $this->equalTo('bar'), // arg2 $this->equalTo('baz') // arg3 );
J'ai donc besoin de passer une semaine à apprendre à apprendre une nouvelle nouvelle framework toplande pour pouvoir utiliser la pleine puissance du code (plutôt que très pauvre de la merde prédéfinie) pour affirmer des arguments à une méthode surbect?
Il y a un espion retourné de $ ceci-> tout () code>, vous pouvez l'utiliser quelque chose comme:
$foo->expects($spy = $this->any())->method('bar');
$foo->bar('baz');
$invocations = $spy->getInvocations();
$this->assertEquals(1, count($invocations));
$args = $invocations[0]->arguments;
$this->assertEquals(1, count($args));
$this->assertEquals('bar', $args[0]);
Est-ce juste moi ou est ce plus le cas ?
À partir de 8.4.1, les tests échouent comme méthode GetInvocations () n'existent plus. Github.com/sebastianbergmann/phpunit/issues/3888
Une mise à jour des réponses de @ Lyte fonctionnant en 2018:
$foo->expects($spy = $this->any())->method('bar'); $foo->bar('baz'); $invocations = $spy->getInvocations(); $this->assertEquals(1, count($invocations)); $args = $invocations[0]->getParameters(); $this->assertEquals(1, count($args)); $this->assertEquals('bar', $args[0]);
Qu'est-ce que "Vous pouvez appeler objet dans l'imitation sur" i> signifie? "Combien de fois cela s'appelle" i> ... tu veux dire "a été appelé" i>?