No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Formulario de creación

16/23
Recursos

Aportes 7

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Para visualizar mejor los errores se puede agregar esta línea al inicio de la función del test:

$this->withoutExceptionHandling();

Ejemplo:

public function test_create()
{
    $this->withoutExceptionHandling(); #oculta la excepción del test
    $user = User::factory()->create();

    $this
        ->actingAs($user)
        ->get('repositories/create')
        ->assertStatus(200);
}
php artisan test

Modificados:

  • tests/Feature/Http/Controllers/RepositoryControllerTest.php
    • test_create
  • app/Http/Controllers/RepositoryController.php
  • resources/views/repositories/create.blade.php

Tests:

  • ir a ruta create repo y retornar status 200

Como usuario nos dirigimos a la ruta de creación del modelo Repositorio y obtenemos status 200. Para que pase el test hay que crear el método create en el Controller y luego la vista que pide le método:

public function test_create()
   {
    $user = User::factory()->create();
    $this->withoutExceptionHandling();
    $this
      ->actingAs($user)
      ->get('repositories/create')
      ->assertStatus(200)
  } 

Bien pero no me gusto que no diera el ejemplo de como validar la interfaz, por lo que entiendo también podemos validar si los campos están correctos es decir el nombre del label o del botón, se que es algo practico y sencillo pero la idea es tener un standar para luego ampliar nuestro conocimiento. Dejo un Ejemplo, pero no se si esta bien??? agradezco cualquier sugerencia.

    public function test_create()
    {
        $user = User::factory()->create();
        
        $this->withoutExceptionHandling();//Sin hay alguna Exception la deja pasar de lo contrario usamos  withExceptionHandling 

        $this
            ->actingAs($user)
            ->get('repositories/create')//Vamos a la ruta
            ->assertSee('Repositorios')//Valido titulo del form
            ->assertSee('URL')//Valido label primer campo 
            ->assertSee('Description')//Valido label segundo campo 
            ->assertSee('Crear')//Valido nombre del boton 
            ->assertStatus(200);//Valida si conecta a la vista-> si la vista no esta creada te genera error 500
    }  

tests/Feature/Http/Controllers/RepositoryControllerTest.php

    public function test_create()
    {
        $user = User::factory()->create();

        $this
            ->actingAs($user)
            ->get('repositories/create')
            ->assertStatus(200);
    }

Comparto el código de create.blade.php

<x-app-layout>
    <x-slot name="header">
        <h2 class="font-semibold text-xl text-gray-800 leading-tight">
            Crear Repositorio
        </h2>
    </x-slot>

    <div class="py-12">
        <div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
            <div class="bg-white overflow-hidden shadow-xl sm:rounded-lg p-4">
                <form action="{{ route('repositories.store') }}" method="POST" class="max-w-mg">
                    @csrf                    
                    <label class="block font-medium text-sm text-gray-700">URL *</label>
                    <input class="form-input w-full rounded-md shadow-sm" type="text" name="url"">

                    <label class="block font-medium text-sm text-gray-700">Description *</label>
                    <textarea class="form-input w-full rounded-md shadow-sm" type="text" name="description"></textarea>

                    <hr class="my-4">

                    <input type="submit" value="Guardar" class="bg-blue-500 text-white font-bold px-4 py-2 rounded-md">
                </form>

            </div>
        </div>
    </div>
</x-app-layout>

Adjunto mi commit de esta clase para el que no este haciendo las practicas ni quiera hacer los formularios

https://github.com/jlbousing/practica-tdd/commit/3cd12178c55857d71a93172e18a3f1109da9cb1c