1
resposta

[Dúvida] test com laravel

como fazer o test

<?php

namespace App\Http\Controllers;

use App\Models\Episode;
use App\Models\Season;
use Illuminate\Http\Request;

class EpisodesController
{
    public function index(Season $season)
    {
        return view('episodes.index', [
            'episodes' => $season->episodes,
            'mensagemSucesso' => session('mensagem.sucesso')
        ]);
    }

    public function update(Request $request, Season $season)
    {
        $watchedEpisodes = $request->episodes;
        $season->episodes->each(function (Episode $episode) use ($watchedEpisodes) {
            $episode->watched = in_array($episode->id, $watchedEpisodes);
        });

        $season->push();

        return to_route('episodes.index', $season->id)
            ->with('mensagem.sucesso', 'Episódios marcados como assistidos');
    }
}

para ver se esta retornando uma instancia de view e com os dados dela

1 resposta

Olá, Vinicius! Como vai?

Para testar se está retornando uma instância de view e com os dados dela, você pode usar o Laravel's Test Response. Aqui está um exemplo de como você pode fazer isso:

<?php

namespace Tests\Feature;

use App\Models\Season;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\WithFaker;
use Tests\TestCase;

class EpisodesControllerTest extends TestCase
{
    use RefreshDatabase;

    /** @test */
    public function index_returns_a_view()
    {
        $season = Season::factory()->create();

        $response = $this->get(route('episodes.index', $season->id));

        $response->assertStatus(200);
        $response->assertViewIs('episodes.index');
        $response->assertViewHas('episodes');
        $response->assertViewHas('mensagemSucesso');
    }
}

No exemplo acima, estamos criando uma instância do modelo Season usando o método factory(), que é um recurso do Laravel para gerar dados de teste. Em seguida, fazemos uma solicitação GET para a rota episodes.index e verificamos se a resposta é 200 (OK), se a view retornada é episodes.index e se a view tem as variáveis episodes e mensagemSucesso.

Nessa seção da documentação oficial você pode ter mais informações sobre os métodos de verificação de resposta do servidor: Available Assertions

Lembre-se de que este é apenas um exemplo e pode precisar ser ajustado para se adequar ao seu projeto.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.