Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
Je suis coincée au niveau d'un test qui fait appel à un plugin controller :
[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
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
Justement elle n'a pas marché la solution
Déjà rien qu'à cette ligne :
[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 :
[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
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
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 :
[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
(peut être pas, je pense que tu va très vite me répondre ^^)
Hors ligne
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é :
[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