Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 22-06-2015 09:28:47

amelie
Membre
Lieu: Marseille
Date d'inscription: 05-02-2013
Messages: 113
Site web

[Résolu] PHPUnit + PluginInterface

Bonjour à tous,

Je suis coincée au niveau d'un test qui fait appel à un plugin controller :

Code:

[lang=php]
$pluginMock = $this->getMockBuilder('Zend\Mvc\Controller\Plugin\PluginInterface')
            ->getMock(); 
$this->assertTrue($pluginMock instanceof PluginInterface);
        
$formatPluginMock = $this->getMock('Intranet\Controller\Plugin\FormatsPlugin');
$formatPluginMock->expects($this->once())
            ->method('formatDateAff')
            ->with($pluginMock);
$this->controller->getPluginManager()->setService('FormatsPlugin', $formatPluginMock);

Il me plante à l'exécution :

1) MaintenanceTest\Controller\SitesControllerTest::testEditActionCanBeAccesse
Zend\Mvc\Exception\InvalidPluginException: Plugin of type Mock_FormatsPlugin_
54d12 is invalid; must implement Zend\Mvc\Controller\Plugin\PluginInterface

Merci pour votre aide parce que là je vois pas ... :s

Dernière modification par amelie (23-06-2015 09:18:12)

Hors ligne

 

#2 22-06-2015 14:06:35

flobrflo
Membre
Lieu: Marseille
Date d'inscription: 26-04-2013
Messages: 376

Re: [Résolu] PHPUnit + PluginInterface

Hello hello,

Bon j'ai jamais vraiment mis le nez en phpUnit avec zf2 mais comme je suis très curieux j'ai essayé de voir pour ton problème. ^^

http://stackoverflow.com/questions/1480 … entication
L'erreur est la même que toi et à priori la réponse a eu beaucoup de retour positif (en plus elle semble cohérente alors.. ^^)

Dernière modification par flobrflo (22-06-2015 14:06:53)

Hors ligne

 

#3 22-06-2015 15:16:59

amelie
Membre
Lieu: Marseille
Date d'inscription: 05-02-2013
Messages: 113
Site web

Re: [Résolu] PHPUnit + PluginInterface

Justement elle n'a pas marché la solution smile

Déjà rien qu'à cette ligne :

Code:

[lang=php]
$authMock   -> expects($this->any())
    -> method('hasIdentity')
    -> will($this->returnValue(true));

en inversant les mockups c'est obligé de planter car hasidentity n'est PAS une méthode de PluginInterface ...

Voici donc ce que j'ai fait :

Code:

[lang=php]

$formatPluginMock = $this->getMock('Intranet\Controller\Plugin\FormatsPlugin', array('formatDateAff'));
$authMock = $this->getMock('Zend\Mvc\Controller\Plugin\PluginInterface');
$authMock->expects($this->any())
        -> with('formatDateAff')
        -> will($this->returnValue($formatPluginMock));
        
$this->controller->getPluginManager()->setService('FormatsPlugin', $authMock);

Mais c'est pas ça du tout ...

Dernière modification par amelie (22-06-2015 15:21:13)

Hors ligne

 

#4 22-06-2015 16:11:48

amelie
Membre
Lieu: Marseille
Date d'inscription: 05-02-2013
Messages: 113
Site web

Re: [Résolu] PHPUnit + PluginInterface

Le souci c'est que si je fous le plugin DANS le module qui correspond à celui que je teste, ça passe nickel. Là je le fous dans un autre module, je change bien les namespaces et tout, ça chie ! grrrrrrrrrrrrr !!!!

Hors ligne

 

#5 22-06-2015 17:12:40

flobrflo
Membre
Lieu: Marseille
Date d'inscription: 26-04-2013
Messages: 376

Re: [Résolu] PHPUnit + PluginInterface

Ouki, bon je pense que tu es déjà allé voir ici :
http://framework.zend.com/manual/curren … sting.html

j'accentuerai juste l'exemple :

Code:

[lang=php]
$albumTableMock = $this->getMockBuilder('Album\Model\AlbumTable')
                            ->disableOriginalConstructor()
                            ->getMock();

(je précise ça vu que tu viens de me parler de placer ton plugin dans un autre module ^^)
Il y a certainement moyen de l'adapter avec ton plugin smile
(peut être pas, je pense que tu va très vite me répondre ^^)

Hors ligne

 

#6 23-06-2015 09:17:33

amelie
Membre
Lieu: Marseille
Date d'inscription: 05-02-2013
Messages: 113
Site web

Re: [Résolu] PHPUnit + PluginInterface

Yatta.

Alors en fait mon test ne trouvais tout simplement pas mon plugin, qui était dans un autre module.
Alors j'ai trifouillé dans les fichiers de config du test (testconfig.php), et je l'ai ajouté :

Code:

[lang=php]
return array(
    'modules' => array(
        'Module1',
        'Module2',
    ),
    'module_listener_options' => array(
        'config_glob_paths'    => array(
            '../../../config/autoload/{,*.}{global,local}.php',
        ),
        'module_paths' => array(
            'module',
            'vendor',
        ),
    ),
);

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages