Behat, login e fixtures

gennaio 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 *


*