web-dev-qa-db-fra.com

PHPUnit: attend la signification de la méthode

Lorsque je crée une nouvelle maquette, je dois appeler la méthode attend. Que fait-il exactement? Et ses arguments?

$todoListMock = $this->getMock('\Model\Todo_List');
        $todoListMock->expects($this->any())
            ->method('getItems')
            ->will($this->returnValue(array($itemMock)));

Je ne trouve la raison nulle part (j'ai essayé des documents). J'ai lu les sources mais je ne peux pas le comprendre. Merci.

40
thom

attend () - Définit combien de fois vous vous attendez à ce qu'une méthode soit appelée:

$mock = $this->getMock('nameOfTheClass', array('firstMethod','secondMethod','thirdMethod'));
$mock->expects($this->once())
     ->method('firstMethod')
     ->will($this->returnValue('value'));
$mock->expects($this->once())
     ->method('secondMethod')
     ->will($this->returnValue('value'));
$mock->expects($this->once())
     ->method('thirdMethod')
     ->will($this->returnValue('value'));

Si vous savez, cette méthode est appelée une fois, utilisez $ this-> once () dans expects (), sinon utilisez $ this-> any ()

voir:
maquette PHPUnit avec plusieurs appels attend ()

https://phpunit.de/manual/current/en/test-doubles.html#test-doubles.stubs

http://www.slideshare.net/mjlivelyjr/advanced-phpunit-testing

49
Marek Sebera

Un regard dans le code source vous dira:

/**
 * Registers a new expectation in the mock object and returns the match
 * object which can be infused with further details.
 *
 * @param  PHPUnit_Framework_MockObject_Matcher_Invocation $matcher
 * @return PHPUnit_Framework_MockObject_Builder_InvocationMocker
 */
public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher);

Et le manuel PHPUnit répertorie les Matchers disponibles sur

  • any () renvoie un matcher qui correspond lorsque la méthode pour laquelle il est évalué est exécutée zéro ou plusieurs fois.
  • never () renvoie un matcher qui correspond lorsque la méthode pour laquelle il est évalué n'est jamais exécutée.
  • atLeastOnce () renvoie un matcher qui correspond lorsque la méthode pour laquelle il est évalué est exécutée au moins une fois.
  • once () renvoie un matcher qui correspond lorsque la méthode pour laquelle il est évalué est exécutée une seule fois.
  • exactement (int $ count) renvoie un matcher qui correspond lorsque la méthode pour laquelle il est évalué est exécutée exactement $ count fois.
  • at (int $ index) retourne un matcher qui correspond lorsque la méthode pour laquelle il est évalué est invoquée à l'index $ donné.
49
Gordon