Método de setUp() al momento de implementar las UnitTest en Laravel
Conoceremos el método de setUp() de los TestCase para inciializar parámetros de las pruebas, por ejemplo, la autenticación del usuario.
El módulo de dashboard se encuentra protegido por autenticación requerida y por el sistema de roles y permisos; pensando en esto, vamos a implementar el siguiente código:
tests/Feature/dashboard/PostTest.php
class PostTest extends TestCase
{
use DatabaseMigrations;
protected function setUp(): void
{
parent::setUp();
User::factory(1)->create();
$user = User::first();
// dd($user);
$role = Role::firstOrCreate(['name' => 'Admin']);
Permission::firstOrCreate(['name' => 'editor.post.index']);
Permission::firstOrCreate(['name' => 'editor.post.create']);
Permission::firstOrCreate(['name' => 'editor.post.edit']);
Permission::firstOrCreate(['name' => 'editor.post.delete']);
$role->syncPermissions([1,2,3,4]);
$user->assignRole($role);
$this->actingAs($user);//->withSession(['role' => 'Admin']);
}
}
En el código anterior, usamos el método de setUp() que se ejecuta antes de cada prueba, en dicho método, podemos colocar código común para ejecutar en cada una de las pruebas, en este ejemplo, la de crear el usuario y establecer un rol de Admin y permisos.
Además, una vez configurado el usuario, configuramos la autenticación mediante actingAs() al cual, podemos establecer datos en sesión en caso de que sea necesario.
Transcripción del vídeo
Ahora sí vamos a tratar el tema de la autenticación así que bueno para esto obviamente tienes que descomentar todo lo que ya hicimos antes es decir ir al navigation layout o como se llame documentar todo para que aparezca aquí otra vez la autenticación, claro está la barra de navegación para indicar bueno que donde teníamos ahí el saludo al usuario y todo lo demás yo lo comenté todo para facilitar. Pero, obviamente solamente tenías que comentar las partes referentes al usuario autenticado como era la parte de gestión de permisos.
Gestión de permisos y rol
Verifica que los permisos y roles tengan el mismo nombre. Si evalúas el contenido y demás te va a indicar clarito que está el login o algo por el estilo pero ya a nosotros sabemos que es por la autenticación según pruebas anteriores entonces podemos ir ya de una al desarrollo.
Entonces por aquí varias cositas yo voy a comenzar aquí haciendo esto en esta prueba en la de test_index pero que quede claro de que por aquí tenemos un método que viene siendo como una especie de constructor para las pruebas es decir que se ejecuta cuando ejecutamos las pruebas se ejecuta antes, es decir, cuando ejecutamos vamos a crear aquí primero el método a colocar fun y se llama setup()
protected function setUp(): void
{
parent::setUp();
}
Crear la estructura de roles y Spatie
Antes, creamos una columna de rol para verificar el tipo de usuario, pero, lo cambiamos con Spatie;aquí obtenemos el usuario:
User::factory(1)->create();
$user = User::first();
Ahora aquí quedaría el problema de los permisos y los roles entonces aquí ya lo configuramos en base a lo que definimos antes:
Permission::firstOrCreate(['name' => 'editor.post.index']);
Permission::firstOrCreate(['name' => 'editor.post.create']);
Permission::firstOrCreate(['name' => 'editor.post.edit']);
Permission::firstOrCreate(['name' => 'editor.post.delete']);
$role->syncPermissions([1,2,3,4]);
$user->assignRole($role);
Y autenticamos el usuario:
Luego, todas las pruebas de esta clase tendrán a un usuario autenticado en la sesión:
$this->actingAs($user);//->withSession(['role' => 'Admin']);
- Andrés Cruz
Este material forma parte de mi curso y libro completo; puedes adquirirlos desde el apartado de libros y/o cursos Curso y Libro Laravel 11 con Tailwind Vue 3, introducción a Jetstream Livewire e Inerta desde cero - 2025.

Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter