A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Index con TDD

34/36
Recursos

Aportes 27

Preguntas 0

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

Por si tienen laravel 8.x y les sale el error con el factory

public function test_index()
    {
        Post::factory()->count(5)->create();
        $response = $this->json('GET','api/posts');
        $response->assertJsonStructure([
            'data' => [
                '*' => ['id','title','created_at','updated_at']
            ]
        ])->assertStatus(200);
    }

Tuve que utilizar este c贸digo para que no me enviara error.

public function index()
 {
    return Post::paginate();
 }

Para muchos como yo no es facil cambiar la forma en la que programas. Sacarte las costumbres, seguir aprendiendo entender que si hay cosas nuevas probablemente traen mejoras (nada lo garantiza) es parte del crecimiento como programador.

Hasta ahora todo ha estado genial y quiz谩s lo mas dif铆cil es aprenderse los m茅todos que se utilizan para probar cada cosa

conclusion, no usare TDD nunca para no tardar 4000000000 a帽os en terminar un proyecto y que mi cliente no se enoje y me trate mal cuando le diga que me tardo mucho

Interesante, aunque igual ser铆a interesante ver c贸mo se escribir铆a el test para una estructura de varios niveles con objetos distintos en cada posici贸n del JSON

C贸digo de prueba m茅todo index =>

public function test_index()
    {
        Post::factory()->count(10)->create();
        $response = $this->json('GET','api/posts');
        $response->assertJsonStructure([
            'data' => [
                '*' => ['id','title','created_at','updated_at']
            ]
        ])->assertStatus(200); // OK
    }
public function index()
    {
        return response()->json(
            $this->post->paginate());
    }```

En laravel 9.5

Como quedo el c贸digo para la versi贸n 18

 public function test_index()
    {
        Post::factory(5)->create();

        $response = $this->json('GET','/api/posts');

        $response->assertJsonStructure([
            'data' =>[
                '*' => ['id', 'title','created_at', 'updated_at']
            ]
        ])->assertStatus(200);
    }

Luz Verde, Luz Roja馃懅

    public function test_index()
    {
        factory(Post::class,5)->create();

        $response = $this->json('GET','/api/posts');

        $response->assertJsonStructure([
            'data'=>[
                '*' => ['id','title','created_at','updated_at']
            ]])->assertStatus(200);
    }

Recomienda revisar la secci贸n de 鈥淎PI Resources鈥, es una forma de organizar mejor nuestra data al momento de retornala 馃榿

馃憞
https://laravel.com/docs/7.x/eloquent-resources

Test Controller:

/**
     * Feature for list all resources test
     *
     */
    public function test_index()
    {
        factory(Post::class, 5)->create();

        $response = $this->json('GET', '/api/posts');

        $response->assertJsonStructure([
            'data' => [
                '*' => ['id', 'title', 'created_at', 'updated_at']
            ]
        ])->assertStatus(200); //OK
    }

Route Controller

/**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        return response()->json(
            $this->post->paginate(), 200
        );
    }

Qu茅 es lo que hac铆a el m茅todo paginate?

Documentacion de la paginaci贸n en Laravel docs

Genial la paginaci贸n que se hace de forma autom谩tica por parte de Laravel, simplemente espectacular!!!

Genial 馃槂

public function test_index() {
    //$this->withoutExceptionHandling();
    $post = factory(Post::class, 5)->create();
    $response = $this->json('GET', "/api/posts/");
    $response->assertJsonStructure([
        'data' => [ '*' => ['id', 'title', 'created_at', 'updated_at']]])
        ->assertStatus(200);//OK
}  


public function index() {
    return response()->json($this->post->paginate());
}

PostControllerTest

public function test_index()
    {
        factory(Post::class, 5)->create();

        $response = $this->json('GET', '/api/posts');

        $response->assertJsonStructure([
            'data' =>[
                '*' => ['id', 'title', 'created_at', 'updated_at']
            ]
        ])->assertStatus(200); //OK
    }

PostController

	public function index()
    {
        return response()->json($this->post->paginate());
    }

PHPUnit 8.5.3 by Sebastian Bergmann and contributors.

鈥 7 / 7 (100%)

Time: 295 ms, Memory: 26.00 MB

public function index()
    {
        return response()->json(
            $this->post->paginate(),200);

    }
public function test_index()
        {
            factory(Post::class,5)->create();

            $response = $this->json('GET','api/posts');

            $response->assertJsonStructure([
                'data' => [
                    '*' => ['id','title','created_at','updated_at']
                ]
                ])->assertStatus(200); //OK
        }

Excelente este ejercicio de pruebas con TDD.

Todo bien. Ya ubique el curso de PHPUnit, voy por el para profundizar.

Aporte de la clase Index con TDD

Prueba


    public function test_index()
    {
        factory(Post::class, 5)->create();

        $response = $this->json('GET', 'api/posts');

        $response->assertJsonStructure([
            'data' => [
                '*' => ['id', 'title', 'created_at', 'updated_at']
            ]
        ])->assertStatus(200);
    }

Funci贸n index de PostController


    public function test_index()
    {
        factory(Post::class, 5)->create();

        $response = $this->json('GET', 'api/posts');

        $response->assertJsonStructure([
            'data' => [
                '*' => ['id', 'title', 'created_at', 'updated_at']
            ]
        ])->assertStatus(200);
    }

Resultado de prueba

No estoy entendiendo por qu茅 esto
$this->post->paginate()
trae todos los post si $this->post es un post solo creado en el constructor?

cumpliendo:

public function test_index()
    {
        // $this->withoutExceptionHandling();
        $post = Post::factory()->count(5)->create();
        $response = $this->json('GET', "/api/posts");

        $response->assertJsonStructure([
            'data' => [
                '*' => ['id','title','created_at','updated_at']
            ]
        ])->assertStatus(200);
    }

public function test_index()
    {
        factory(Post::class, 5)->create();

        $response = $this->json('GET', '/api/posts');

        $response->assertJsonStructure([
            'data' => [
                '*' => [
                    'id',
                    'title',
                    'created_at',
                    'updated_at'
                ]
            ]
        ])->assertStatus(200);
    }

Mi c贸digo.

public function test_index()
    {
        // Con esto vemos el mensaje del error
        $this->withoutExceptionHandling();

        // Primero se crea el post
        $post = Post::factory()->count(5)->create();

        // Accedemos al m茅todo GET para listar datos
        $response = $this->json('GET', '/api/posts');

        //Creamos las validaciones
        $response->assertJsonStructure([
            'data' => [
                '*' => ['id', 'title', 'created_at', 'updated_at']
            ]
        ])->assertStatus(200); // Status Ok

    }
public function index()
    {
        //dd(Post::paginate());
        return response()->json(Post::paginate());
    }