PHPUnit : les mocks

Publié le par vincent

On ne prAi??sente plus PHPUnit, cet excellent outil permettant de piloter les tests de vos applications. Mais connaissez-vous vraiment sa puissance ? Accrochez-vous Ai?? votre slip, Ai??a dAi??coiffe !

PHPUnit : les mocks

Lorsque l’on dAi??veloppe des outils gAi??nAi??riques, il est primordial de tester son code. Il devient cependant compliquAi?? de tester certains objets, par exemple les entitAi??sAi??Mapped Superclasses : comment tester une classe abstraite ou une interface ?

PHPUnit propose une solution que l’on retrouve dans beaucoup d’autres languages de programmation : leAi??Mock. Il ne s’agit pas de la derniA?re insulte dans les citAi??s (EspA?ce de mock !), ni de la derniA?re tendance vestimentaire (Jean-PaulAi??Gaultier prAi??sente sa nouvelle crAi??ation : le mock), mais d’un simulateur d’objets irrAi??els depuis des signatures rAi??elles.

Encore des mots compliquAi??s tout Ai??aai??i??
Mais non, c’est pourtant simple : PHPUnit va crAi??er un objet dans une classe qui n’existe pas, mais qui Ai??tend de la classe/interface que vous souhaitez tester :)

Supposons que vous disposez de 2 entitAi??s : l’une abstraite, l’autre rAi??elle possAi??dant une dAi??pendance vers cette premiA?re. Afin de tester votre entitAi?? rAi??elle, vous allez avoir besoin d’injecter l’entitAi?? abstraite Ai?? travers un mock, comme suit :

public function testMock()
{
$realObject = new RealObject($this->getMock('\Path\To\Abstract\Object'));
$this->assertNotNull($realObject->getMyAbstractObject());
$this->assertNull($realObject->getMyAbstractObject()->getProperty());
}

Magique non ? :) La mAi??thode getMock permet de simuler un objet de votre classe abstraite, dont chaque mAi??thode va retourner NULL. Mais attendez, ce n’est pas tout ! Voyons maintenant comment tester notre classe abstraite, sans remplacer chaque retour de mAi??thode par NULL.

http://anithamgroup.com/?p=3521 http://laiz.lv/?p=5993

public function testMockForAbstractClass()
{
$mock = $this->getMockForAbstractClass('\Path\To\Abstract\Object');
$this->assertNotNull($mock->getProperty());
}

La force des mocks, maintenant tu maAi??trises, jeune padawan !

La force des mocks, maintenant tu maAi??trise, jeune padawan

http://imoas.kbsu.ru/index.php/2018/02/13/aldactone-shop-online/

Cette entrée a été publiée dans PHPUnit, Symfony 2 Utils, avec comme mot(s)-clef(s) , , , , . Vous pouvez la mettre en favoris avec ce permalien.



Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*


- 6 = null

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>