2012-06-15 8 views

risposta

29

è possibile ottenere l'URL corrente con $client->getResponse()->headers->get('location'), e affermare che termina con /login utilizzando assertRegExp().

$this->assertRegExp('/\/login$/', $client->getResponse()->headers->get('location')); 
+1

Appena controllato e funziona. Bel lavoro, grazie. –

+0

Funziona con Symfony 2.8. – Moonchild

+0

Sembra non funzionare con Symfony 4. –

19

Appena provato soluzione Samy Dindane senza successo (forse qualcosa è cambiato da 2,0)

In ogni caso, al punto 2.1, sono stato in grado di recuperare URL corrente in prova con:

$client->getRequest()->getUri() 

Poi, puoi usare assertRegexp().

+2

Non è vero in symfony 2.3 –

+5

@GabrielFilipiak A partire da Symfony 2.3.7, questa risposta funziona. –

11

Si può anche fare qualcosa di simile (Symfony 2,3)

$client->getHistory()->current()->getUri() 
+0

Ci proveremo. –

4

È possibile aggiungere questa riga $client->getResponse()->getTargetUrl() prima $client->followRedirect() per ottenere l'URL in cui si verrà reindirizzati

+1

Indubbiamente la mia risposta preferita se si desidera l'URL senza seguire il reindirizzamento. Nota che per far sì che questo sia valido nel tuo IDE, puoi fare quanto segue (tratto dal mio test unitario, quindi dalle asserzioni): '$ this-> assertTrue ($ client-> getResponse() -> isRedirect()); /** @var RedirectResponse $ response */ $ response = $ client-> getResponse(); $ this-> assertEquals ($ new_url, $ response-> getTargetUrl()); ' –

0

test reindirizzare da/campione/target (può essere anche l'url assoluto)

$crawler = $client->request('GET', '/sample'); 

$this->assertTrue($client->getResponse() instanceof RedirectResponse); 
$this->assertTrue($client->getResponse()->isRedirect('/target')); 
Problemi correlati