2013-03-19 20 views
10

Su un controller symfony2, vorrei testare un controller, che restituisce un oggetto Response. La mia classe di test si estende da WebTestCase. Io uso il static::createClient() per ottenere un client operativo.Test funzionale di un controller symfony2: come generare un percorso

Il mio problema è per chiamare il percorso corretto sulla mia installazione corrente con un host virtuale.

$client->getContainer()->get('router')->generate('my_route', array(), true) generare un percorso con localhost come host. Ma questo non funziona come ho myproject.local come host.

$client->getContainer()->get('kernel')->getRootDir() e altro metodo dir forniscono il percorso del file linux, non il percorso web.

Non riesco a codificarlo come non sono solo sul progetto. Quindi qual è il metodo per ottenere il percorso corretto o esiste un altro modo per testare il controller?

+0

Perché si passa 'true' come terzo argomento al metodo' generate'? Hai davvero bisogno di un URL assoluto generato? –

+0

Sì, perché l'URL predefinito è collegato anche su localhost. Oppure ho bisogno di un altro metodo per testare il mio controller. – AlphaB

+0

Non stai usando il client di prova fornito da Symfony? –

risposta

9

incorporato nel quadro di prova (WebTestCase) ha bisogno solo il percorso relativo per essere in grado di testare le applicazioni in diversi ambienti Symfony2:

$client->getContainer()->get('router')->generate('my_route', array(), false); 

Symfony simula un client HTTP e le prove contro un'istanza del kernel creato per quel test. Non ci sono server Web coinvolti.

Si può leggere di più su come la simulazione client funziona qui: http://symfony.com/doc/current/book/testing.html#working-with-the-test-client

7

Come accennato nella documentazione di Symfony, si consiglia di utilizzare URL assoluti, perché il cambiamento di URL avrà un impatto gli utenti finali ed è questo ciò che la copertura vuoi in anche i tuoi test funzionali.

"hardcoding gli URL di richiesta è una best practice per i test funzionali. Se il test genera URL utilizzando il router Symfony, non viene rilevata alcuna modifica apportata agli URL applicativi che possono incidere gli utenti finali."

Visualizza maggiori informazioni qui: http://symfony.com/doc/current/book/testing.html#working-with-the-test-client

+2

Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui le parti essenziali della risposta e fornire il link per riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia. – serenesat

+0

Ciao @serensat grazie per il suggerimento, vedo il punto. Ho appena aggiunto la citazione della parte essenziale. – honzalilak

Problemi correlati