2012-06-15 20 views

Respuesta

29

, usted puede obtener la URL actual con $client->getResponse()->headers->get('location'), y afirmar que termina con /inicio de sesión utilizandoassertRegExp().

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

Acabo de marcar esto y funciona. Buen trabajo, gracias. –

+0

Funciona para Symfony 2.8. – Moonchild

+0

Parece que no funciona con Symfony 4. –

19

Sólo probamos solución Samy Dindane sin éxito (tal vez algo cambió de 2.0)

De todos modos, en el punto 2.1, que fue capaz de recuperar la URL actual en la prueba con:

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

Entonces, puedes usar assertRegexp().

+2

No es cierto en Symfony 2.3 –

+5

@GabrielFilipiak A partir de Symfony 2.3.7, esta respuesta funciona. –

11

También puede hacer algo como esto (Symfony 2,3)

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

Lo intentaré. –

4

Puede añadir esta fila $client->getResponse()->getTargetUrl() antes $client->followRedirect() Obtenga la dirección en la que va a ser redirigido

+1

Sin duda mi respuesta preferida si quieres la URL sin seguir el redireccionamiento. Tenga en cuenta que para validar esto en su IDE, puede hacer lo siguiente (tomado de mi prueba de unidad, por lo tanto, las aserciones): '$ this-> assertTrue ($ client-> getResponse() -> isRedirect()); /** @var RedirectResponse $ response */ $ response = $ client-> getResponse(); $ this-> assertEquals ($ new_url, $ response-> getTargetUrl()); ' –

0

prueba redirigir desde/muestra a/objetivo (puede ser la URL absoluta también)

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

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