Nuevo en Symfony 5.1: Login más sencillo en los tests
En los tests funcionales, a veces tienes que loguearte como usuario para testear páginas protegidas por seguridad. Reproducir el proceso completo de login (ej. introducir el nombre y contraseña en un formulario y enviarlo) hace que los tests sean más lentos. Symfony recomienda un truco para evitar este problema, pero puede que no te sirva para tu aplicación.
Por ese motivo, en Symfony 5.1 hemos añadido un nuevo método llamado loginUser()
que simula el login de un usuario dentro de un test. El método solo requiere
que le pases el objeto que representa al usuario (el objeto debe implementar la
interfaz UserInterface
):
// tests/Controller/ProfileControllerTest.php namespace App\Tests\Controller; use App\Repository\UserRepository; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; class ProfileControllerTest extends WebTestCase { // ... public function testVisitingWhileLoggedIn() { $client = static::createClient(); // obtén o crea el usuario de alguna manera (ej. creando usuarios específicos // para tests cuando cargues los "fixtures" o datos de prueba de los tests) $userRepository = static::$container->get(UserRepository::class); $testUser = $userRepository->findOneByEmail('[email protected]'); $client->loginUser($testUser); // el usuario ya está logueado, así que pueden testear páginas protegidas $client->request('GET', '/profile'); $this->assertResponseIsSuccessful(); $this->assertSelectorTextContains('h1', '¡Hola Usuario!'); } }
Esta funcionalidad fue contribuida por Wouter De Jong en el pull request #35997.
Fuente: New in Symfony 5.1: Workflow improvements
Comentarios
Proyectos Symfony destacados
La forma más sencilla de generar el backend de tus aplicaciones Symfony. Ver más
Síguenos en @symfony_es para acceder a las últimas noticias.