Behat, login e fixtures

January 30, 2014
By

Voglio usare behat per alcuni dei test di un nuovo progetto e ho trovato un aspetto non così semplice da risolvere: il login reale senza un form di registrazione

Il progetto al momento non ha un form di registrazione, quindi non posso sfruttare il processo di registrazione, inoltre non voglio essere legato ad una funzionalità di registrazione che non è ancora richiesta dal progetto.

Ho provato a fare mock dell’utente, ma quella di iniettare un UserToken “fake” dentro il container si è rivelata una strada cieca

Ho trovato una soluzione praticabile nell’usare le Fixtures e specificatamente usando lo usermanager per salvare automaticamente un utente corretto

La  parte complessa è stata iniettare il container nella classe della Fixture,  dato che il metodo  spiegato nella documentazione ufficiale semplicemente non funziona.

La documentazione ufficiale dice che è sufficiente implementare la ContainerAwareInterface e il relativo metodo setContainer perché questo venga chiamato automaticamente da Symfony. Questo semplicemente non accade. Non ho indagato oltre e ho optato per non implementare la ContainerAwareInterface, iniettando invece ni maniera esplicita i servizi necessari istanziando la classe Fixture dall’interno del mio test

Avere un container disponibile mi ha reso semplice usarlo per ottenere un utente corretto, compilare i valori necessari e salvarlo

A  questo punto posso testare la funzionalità di login usando behat senza avere necessità di una funzionalità raggiungibile dall’esterno per creare utenti

 

Tags: , , , ,

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

ERRORE: il plugin si-captcha.php informa che il supporto GD image non é stato rilevato in PHP!

Contatta il tuo fornitore del servizio di hosting e domada perché il supporto GD image non sia stato abilitato per il PHP.

ERRORE: il plugin si-captcha.php informa che la funzione imagepng non é stata rilevata in PHP!

Contatta il tuo fornitore del servizio di hosting e domada perché la funzione imagepng non sia stata abilitata per il PHP.