Helper para iniciar sesi贸n en tests Pest
Iniciar sesi贸n como un usuario es algo muy usual que hacemos en nuestros tests.
Principalmente en endpoints donde la creaci贸n de modelos deben estar asociados al usuario que los haya creado.
Por ejemplo, el autor de una entrada de blog $post->author
.
Una forma de hacerlo es utilizar el m茅todo actingAs
que Laravel proporciona.
1<?php2 3test('application', function () {4 $this->actingAs(App\Models\User::factory()->create());5});
Pero ser铆a bueno abstraer esta l贸gica en un helper que sea m谩s declarativo.
Por ejemplo login()
.
En Pest podemos hacerlo definiendo test helpers en el archivo tests/Pest.php
.
Haremos que al helper se le puede pasar un usuario, de lo contrario generaremos uno.
Para poder acceder a nuestro TestCase fuera de una clase debemos utilizar el test()
helper.
Esto nos devuelve el TestCase actual de d贸nde se haya llamado nuestra funci贸n login
.
1<?php 2 3// tests/Pest.php 4 5// ... 6 7function login($user = null) 8{ 9 return test()->actingAs($user ?? App\Models\User::factory()->create());10}
Ahora podemos utilizar nuestro helper en los tests.
1<?php2 3test('application', function () {4 login();5});