Este video forma parte del curso completo sobre Laravel, como te había comentado ya yo traduje completamente la prueba de la categoría test a lo que sería de php unit para pest, entonces te voy a mostrar cuales fueron los cambios que realicé, indicando que es prácticamente todo es igual, es decir, no hay ningún cambio sustancial a sección de un método aserción que no existía o no existe en el Api Pest y y por lo tanto tuve que emplear uno que fuera equivalente o que funcionara o lo pudiéramos implementar de una forma similar Entonces por aquí te voy mostrando voy a hacerlo completo.
Recordemos un poco que aquí en el pest estamos utilizando o definimos esta función para generar nuestro token de autenticación:
tests/Pest.php
uses(TestCase::class, RefreshDatabase::class)->in('Feature');
function generateTokenAuth()
{
User::factory()->create();
return User::first()->createToken('myapptoken')->plainTextToken;
}
A partir del mismo podemos emplear el método en cualquier parte sin ningún problema, antonces por aquí tenemos el de test que lo que permite es tal cual veíamos probar el de obtener las categorías página sin paginar que es la que tenemos acá son todas y puedes ver que no hay ningún cambio lo mismo el Ok y el hacer JSON y por lo demás aquí lo que es el Factory para generar la Data:
test('test all', function () {
Category::factory(10);
$categories = Category::get()->toArray();
$this->get(
'/api/category/all',
[
'Authorization' => 'Bearer ' . generateTokenAuth()
]
)->assertOk()->assertJson($categories);
});
Luego, hacer la petición, al igual que hacemos con PHPUnit:
$this->get(
'/api/category/all',
[
'Authorization' => 'Bearer ' . generateTokenAuth()
]
Y aquí le pasamos el token aquí lo único que cambia es que ya no empleamos el de header para definir el header sino se lo pasamos directamente como un parámetro y esto ya es algo que hicimos antes el de Test by ID es exactamente lo mismo tal cual te comentaba:
'Bearer ' . generateTokenAuth()
Recuerda que si tienes alguna duda puedes dejarla en el bloque de comentarios pero no voy a explicar otra vez lo mismo porque ya lo hemos hecho varias veces y otra vez es igual aquí lo mismo generar la Data de prueba las pruebas los métodos de aserción son exactamente los mismos y para el dep más o menos lo mismo este es para probar crear Bueno este también implementamos uno similar antes o perdón este lo implementamos antes, entonces lo salto y aquí es donde tenemos el cambio este método:
$this->assertStringContainsString("The title field is required.", $response->getContent());
No existe, en su lugar, empleamos el siguiente método que evalúa en base a expresiones regulares:
$this->assertMatchesRegularExpression("/The title field is required./", $response->getContent());
Entonces es lo que le estamos indicando que busca aquí la respuesta Fíjate que son las mismas funciones de en que contain entonces no tenemos ningún problema por acá y bueno funciona otra vez de igual manera aquí Te dejé de igual manera el código anterior solamente para esta prueba para que puedas comparar o utilizarlo para bueno hacer tus propias pruebas aquí lo mismo otra vez cambiamos el método un poco lo mismo el de hacer contains aquí No cambia nada hacer content hacer estatus Bueno este Recuerda que lo empleo o el de Ok o el de 404 va ser estatus:
assertOk()
Depende de cuál exista para comparar el código de estado hay varios y el de put es muy similar al de creación y seguimos bajando y ya aquí terminamos todo como puedes ver no tenemos así sin ninguna novedad aquí lo único que hice fue una pequeña refactorización al a la a la clase ya no es una clase el archivo en el cual le quité el response y coloque aquí todos los códigos.
Finalmente, aquí podemos ver que todo funciona para que veas que no hago trampa coloco algo incorrecto y ahora va a fallar entonces puedes ver que obviamente está funcionando nuestras pruebas que tenemos aquí definidas así que pues nada ya con esto creo que de igual manera de manera demostrativa o bueno no demostrativa sino ya de manera práctica me parece interesante hacer esto mismo pero creo que va a ser un video para hacer el paso a paso de hacer la traducción en caso de que alguien tenga algunas dudas por ahí pero otra vez todo esto ya deberías hacerlo tú sin ningún problema y cualquier duda puedes ir a consultar el código fuente y ahí ver en caso de que otra vez tengas algún haciendo la migración bueno veas como yo lo hice una posible implementación o si no directamente te ves el video así que pues nada sin más que decir vamos a la siguiente clase.
- Andrés Cruz
Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter