Archived post from my old blog (2007–2016), restored from the Wayback Machine. It is published as written at the time, in Italian; tools and versions are likely out of date.
Behat, login e fixtures
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
← Archive