stavo imparando di test di unità e ho tentato di risolvere il seguente problema:ZF2 autenticazione unit test
Zend\ServiceManager\ServiceManager::get was unable to fetch or create an instance for zfcUserAuthentication
... con l'unica risposta data a:
Simple ZF2 Unit Tests for a controller using ZfcUser
Così la mia funzione setUp ha lo stesso aspetto. Purtroppo, ricevo il seguente messaggio di errore:
Zend\Mvc\Exception\InvalidPluginException: Plugin of type Mock_ZfcUserAuthentication_868bf824 is invalid; must implement Zend\Mvc\Controller\Plugin\PluginInterface
E 'causata in questa parte del codice (divisi nel mio codice nello stesso modo): oggetto
$this -> controller->getPluginManager()
->setService('zfcUserAuthentication', $authMock); // Error refers to this line.
Il $ authMock non è a quanto pare implementazione dell'interfaccia plugin, che devo implementare per passare in setService.
$ authMock non è destinato a essere passato lì per il suo utilizzo nei test di unità? Dovrei usare un metodo setService diverso (unit-testing oriented)?
Ho bisogno di un modo per gestire la registrazione nella mia applicazione, o il mio test delle unità è inutile.
Grazie per qualsiasi consiglio.
=== Edit (2013/11/02) ===
ho voluto concentrarmi su questa parte di chiarimenti, come credo che questo sia l'area del problema:
// Getting mock of authentication object, which is used as a plugin.
$authMock = $this->getMock('ZfcUser\Controller\Plugin\ZfcUserAuthentication');
// Some expectations of the authentication service.
$authMock -> expects($this->any())
-> method('hasIdentity')
-> will($this->returnValue(true));
$authMock -> expects($this->any())
-> method('getIdentity')
-> will($this->returnValue($ZfcUserMock));
// At this point, PluginManager disallows mock being assigned as plugin because
// it will not implement plugin interface, as mentioned.
$this -> controller->getPluginManager()
->setService('zfcUserAuthentication', $authMock);
Se il il mock non gestisce le implementazioni necessarie, in quale altro modo posso fingere di accedere?
Sono corretto non è tanto necessario per i controllori dell'unità di test in quanto è modelli? Trovo che è dove tengo tutto il mio codice di autenticazione. – Shoreline
Ho fatto qualcosa di simile di recente senza alcun problema. Che aspetto ha la tua classe di testcase completa? Che aspetto ha il tuo bootstrap di prova? E infine l'azione che stai cercando di testare. – Ruben
Si utilizza una configurazione di applicazione speciale durante il test dell'unità? In questo caso è possibile che il modulo zfcUser non sia caricato nell'ambiente di test. – SmasherHell