Depuración de API

depuración de API

Prueba y depuración de API de Laravel

Depuración de API — En este tutorial, lo guiaré a través de lo que trata el paquete y cómo puede ayudar a acelerar el desarrollo de su API con el marco de Laravel.

Laravel Api Test Helper es un paquete de Laravel basado en rasgos, lo que significa que solo contiene un rasgo de PHP que puede incluir en su clase de prueba, eso es todo.


Instalación y configuración

Para este tutorial, asumo que ha creado una aplicación Laravel.

Primero, instalemos el paquete con via composer:

composer require stephenjude/api-test-helper --dev

A continuación, necesitamos que incluya el rasgo de ayuda dentro de nuestro TestCase.php. Esta clase viene con cada instalación de Laravel. Puede encontrarlo dentro del directorio de test de su proyecto.

<?php
namespace Tests;use Illuminate\Foundation\Testing\TestCase as BaseTestCase;
use Stephenjude\ApiTestHelper\WithApiHelper;abstract class TestCase extends BaseTestCase
{
    use CreatesApplication;
    use WithApiHelper; // This is our api helper trait
  
    ...
}

Puede elegir incluir este rasgo en la clase de prueba particular que contiene sus pruebas de API, pero mantenerlo aquí lo hace accesible para toda nuestra clase de prueba, ya que extenderán la clase abstracta  TestCase.


Uso: API de prueba y depuración

Para este tutorial, crearemos un único punto final que recupere a todos los usuarios de nuestra base de datos. Comencemos por crear una clase de prueba para nuestro punto final de la lista de usuarios.

php artisan make:test UserApiTest

Esto creará un archivo de prueba dentro del directorio tests\Feature en su proyecto Laravel. Este es el valor predeterminado para Laravel, pero puede configurar este directorio para que se adapte a su proyecto.

 

PD: asegúrese de haber agregado las credenciales de su base de datos a su archivo .env.

 

Ahora agreguemos las pruebas para nuestro punto final de la lista de usuarios. Usaremos Laravel getJson() para realizar una solicitud a nuestro punto final y luego lo configuraremos en nuestra propiedad de ayuda de prueba  $this->response. Esto le da al paquete Api Test Helper acceso a la respuesta de la API, con lo que el rasgo de ayuda puede ayudarlo a probar y depurar la respuesta.

<?phpnamespace Tests\Feature;use App\Models\User;
use Tests\TestCase;class UserApiTest extends TestCase
{
    public function test_get_user_list()
    {
        User::factory()->create();        $this->response = $this->getJson('api/users');        $this->dumpApiData(); // Dumps api response on console
    }
}

Respuesta de la API de volcado: dumpApiData()

Entonces comencé con dumpApiData() que nos permite volcar la respuesta devuelta de nuestra respuesta, esta respuesta puede ser una respuesta válida o una respuesta de error de la API o el error de su aplicación en sí.

Respuesta de la API de registro: logApiData()

También puede registrar la respuesta de su api llamando a logApiData(). Este método registra todas las respuestas de su aplicación en su archivo de registro.

...
$this->response = $this->getJson('api/users');

$this->logApiData();
...

Respuesta de la API de decodificación: decodeApiResponse()

También puede decodificar la respuesta de la API llamando al método decodeApiResponse(), que devuelve la respuesta de su API.

 

PD: Aconsejaré el uso del método json() proporcionado en Laravel. Ya he creado este paquete antes de conocerlo. $this->response->json()

 

Probando la respuesta correcta de la API

Para probar una respuesta exitosa, este paquete proporciona tres (3) métodos que voy a explicar con un ejemplo.

Para realizar una solicitud válida, creemos un controlador y una ruta válidos que puedan manejar nuestra solicitud.

php artisan make:controller UserApiController -r

Aquí está nuestra clase de controlador con una respuesta válida que devuelve la lista de usuarios.

<?phpnamespace App\Http\Controllers;use App\Models\User;
use Illuminate\Http\Request;class UserApiController extends Controller
{
    public function index()
    {
        return response()->json([
            'success' => true,
            'data' => User::all(['id', 'name', 'email',])
        ]);
    }
    
    ...

Ahora agreguemos nuestra ruta de lista de usuarios a api.php

Route::get('/users', [UserApiController::class, 'index']);

Ahora que tenemos una respuesta válida para nuestros puntos finales, probemos los métodos de respuesta válidos.

asertApiSuccess()

...
$this->response = $this->getJson('api/users');$this->assertApiSuccess(); // assert response success
...

El método afirma que la respuesta contiene el campo de éxito con el valor verdadero 'success' => true o falla si no lo hace.

asertApiResponse ($ datos)

El método afirma que la respuesta contiene los datos reales o falla si no es así.

...
$user = User::factory()->create()->only(['id', 'name', 'email']);$this->response = $this->getJson('api/users/'.$user['id']);$this->assertApiResponse($user); // assert actual data
...

asertApiResponseCollection($ datos)

El método afirma que la respuesta contiene la colección real o falla si no es así.

...
User::factory()->count(2)->create();$this->response = $this->getJson('api/users');$this->assertApiResponseCollection(User::all(['id', 'name', 'email'])); // assert actual collection
...

Conclusión

Creo que ha aprendido cómo acelerar su proceso de desarrollo con este paquete y, si es nuevo, básicamente comprende cómo probar sus puntos finales. Puede encontrar el enlace al repositorio de este tutorial a continuación y no olvide destacar el repositorio de paquetes.

Recent Post