Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

No se detecta la ruta del controlador en test con phpunit

2 de septiembre de 2016

Estoy probando el test que se crea en el DefaultController de un nuevo bundle con Symfony 2.8.9:

class DefaultControllerTest extends WebTestCase
{
    public function testIndex()
    {
        $client = static::createClient();
 
        $crawler = $client->request('GET', '/');
 
        $this->assertContains('Hello World', $client->getResponse()->getContent());
    }
}

Estoy ejecutando solo los test de esa clase Default:

php phpunit-5.5.4.phar -c app src/GestionPagoBundle/Tests/Controller/DefaultControllerTest.php

Además he probado comparar el status code:

$this->assertEquals(200, $client->getResponse()->getStatusCode());

Ambas respuestas son failed puesto que no encuenta la ruta.

1) GestionPagoBundle\Tests\Controller\DefaultControllerTest::testIndex
Failed asserting that 404 matches expected 200.
 
/var/www/html/Proyecto/src/GestionPagoBundle/Tests/Controller/DefaultControllerTest.php:15

Debería configurar algo específico en el phpunit.xml.dist? PD: Mi kernel no ha sido movido hacia ningún lugar.


Respuestas

#1

El ejemplo que muestras está claro que debería funcionar. No se qué puede estar pasando para que la ruta de la portada devuelva 404, pero en estos casos muy raros, una posible solución puede ser volcar toda la información de la respuesta recibida, a ver si ves algún mensaje que te pueda dar pistas sobre lo que está pasando:

class DefaultControllerTest extends WebTestCase
{
    public function testIndex()
    {
        $client = static::createClient();
 
        $crawler = $client->request('GET', '/');
 
        // añade esta línea
        var_dump($client->getResponse());
 
        $this->assertContains('Hello World', $client->getResponse()->getContent());
    }
}

@javiereguiluz

2 septiembre 2016, 8:56
#2

Buen día, creo que sería importante tambien que verificaras si la ruta carga desde el navegador.

Porque puede que hayas colocado un prefix en el import de las rutas del controlador, y si es así no va a funcionar.

Con el siguiente comando puedes ver las rutas que tienes disponibles:

php appc/console debug:router

Si puedes muestra el resultado de dicho comando. Saludos!

@manuel_j555

2 septiembre 2016, 14:52