NOTA IMPORTANTE en windows deben ejecutar asi
php vendor/phpunit/phpunit/phpunit
Entender Laravel
Novedades y herramientas actualizadas en Laravel
Desarrollo web con Laravel: proyectos y funcionalidades clave
Curso de Laravel 6: Configuración del Entorno de Desarrollo
Instalación y configuración de Laravel paso a paso
CRUD en Laravel: Crear, Leer, Actualizar y Eliminar Usuarios
"Creación de Controladores y Vistas en Laravel"
Creación de Formularios y Validación en Laravel con Bootstrap
Comprender los Fundamentos de Laravel
Rutas y Controladores en Laravel: Fundamentos Esenciales
Protección de Rutas y Controladores en Laravel con Middleware
Validación de Formularios en Laravel: Buenas Prácticas y Ejemplos
Sistema de Plantillas Blade en Laravel: Creación y Uso Eficiente
Implementación de Sistema de Autenticación en Laravel con Bootstrap
Aprender sobre Eloquent ORM
Manejo de Bases de Datos con Eloquent en Laravel
Relaciones de Tablas y Manipulación de Datos en Laravel
Manipulación de Colecciones y Serialización de Datos en Laravel
Manipulación de Datos en Bases de Datos con PHP
Crear PlatziPress
Creación de un Blog con Sistema de Autenticación y Slugs
Configuración de Migraciones, Factories y Seeders en Laravel
Configuración de Rutas y Controladores en Laravel para Listado de Posts
Configuración Visual y Paginación en Laravel y Vue.js
Gestión de Artículos en Laravel: Rutas, Controladores y Vistas
Creación de Formularios en PHP con HTML y Bootstrap
Validación y Guardado de Datos en Laravel
Formulario de Edición de Artículos con Laravel
Gestión de Formularios y Archivos en Laravel
Integración de Imágenes y Contenido Multimedia en Proyectos Web
Construir Proyecto Final: API con TDD (Intermedio)
Testing y Pruebas Funcionales en Laravel: Proyecto Intermedio
Pruebas de Software: Ciclo Rojo, Verde y Refactorización
Configuración de Proyectos en Laravel: Controladores y Pruebas
Desarrollo Guiado por Pruebas en Laravel: Configuración y Ejecución
Refactorización y Validación de Código en Pruebas Unitarias
Pruebas y Configuración de Controladores en Laravel
Actualización de Datos en Controladores: Método y Pruebas
Pruebas Unitarias para Método de Eliminación en Bases de Datos
Creación y Prueba de Métodos Index en PHP
Protección de APIs con Autenticación Token en Laravel
Desarrollo de Formularios con Blade y Verbalización de Datos
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Cuando hablamos de Laravel, nos adentramos en el mundo del desarrollo profesional de software, en donde el testing es una herramienta fundamental. Un programador profesional se beneficia de esta práctica para asegurar la calidad de su código.
A través del testing, puedes verificar que las funcionalidades de tu aplicación funcionan como esperas, lo que te permite identificar y corregir errores antes de que lleguen a producción. Laravel ya viene preparado para implementar pruebas, lo que lo convierte en un entorno ideal para el desarrollo de aplicaciones robustas.
Anteriormente, nos encontramos con el desafío de integrar imágenes en un post llamado "Yo Tú". Probamos el proceso de añadir una imagen:
Este ejercicio no solo probó la funcionalidad básica, sino que también demostró cómo el testing puede ayudarnos a garantizar que cada elemento se comporte como debería.
El testing permite a los desarrolladores dormir tranquilos, sabiendo que su código cumple con los estándares de calidad esperados. Implementar pruebas dentro de tus proyectos te permite:
Laravel divide las pruebas en dos tipos fundamentales:
Pruebas Unitarias (Unit Tests):
Pruebas Funcionales (Functional Tests):
Para comenzar a utilizar pruebas en Laravel, sigamos un sencillo proceso de configuración:
Instalación del Proyecto:
Iniciar un nuevo proyecto con el comando:
laravel new myAppName
Revisar la estructura de carpetas:
phpunit.xml
.tests
, dividiéndose en subcarpetas para pruebas unitarias y funcionales.Creación de Clases de Pruebas:
artisan
, puedes crear estas clases automáticamente con comandos específicos.php artisan make:test UserTest
Ejecución de Pruebas:
phpunit
para ejecutar las pruebas y confirmar su comportamiento.vendor/bin/phpunit
Laravel facilita la creación y ejecución de pruebas, destacándose como una herramienta poderosa para asegurar la calidad del código y, al mismo tiempo, fomentar buenas prácticas de desarrollo.
Crear pruebas no solo es una actividad técnica; es una filosofía de desarrollo que te permitirá construir con seguridad y confianza. Cualquier mejora en tu aplicación estará siempre respaldada por pruebas sólidas, lo cual es indispensable en proyectos a gran escala.
Invitamos a todos los estudiantes y desarrolladores a explorar estas capacidades que ofrece Laravel y a integrar más testing dentro de sus proyectos actuales. ¡Tu habilidad para detectar y solucionar errores eficientemente mejorará significativamente!
Aportes 37
Preguntas 6
NOTA IMPORTANTE en windows deben ejecutar asi
php vendor/phpunit/phpunit/phpunit
Este proyecto me emociona mucho porque nunca he desarrollado un API, así que será la primera vez que lo haga, estoy listo!
Laravel ya tiene su manejador de test por defecto y los puedes ver declarados en el archivo phpunix.xml en la etiqueta <textsuite>
Podras ver que hay dos tipos de tests, los unit y los feature, los unit tests son pruebas que se realizan en un solo segmento de codigo, los feature tests son pruebas para un proceso o proyecto en general
El manejo y pruebas de las api se hace desde la terminal, diferente a las pruebas de frontend que se hacen de manera visual en la ventana
Para crear un test
$ php artisan make:test UserTest #crea archivo de pruebas funcionales
$ php artisan make:test UserTest --unit #crea la prueba en unitarias
Los tests creados los podemos vidualizar y editar en la ruta tests/Feature y tests/Unit
Para correr todos los tests que tengamos tenemos que correr el archivo phpunit ubicado en la ruta vendor/bin/phpunit
$ vendor/bin/phpunit
En windows deben ejecutar phpunit de la siguiente forma:
php vendor/phpunit/phpunit/phpunit
# También puedes utilizar el siguiente comando para que sea más visual
php vendor/phpunit/phpunit/phpunit --testdox
El testing nos garantiza de que podamos crear código de calidad. Ya Laravel viene preparado con PHPUnit con su archivo .xml ya configurado.
En la carpeta tests se encuentra las carpetas de las pruebas Unit o Feature, dentro de estas carpetas es que haremos nuestras modificaciones.
🙊 Y tenemos que recordar que vamos revisar nuestro sistema desde la terminal.
Para crear las pruebas utilizamos el siguiente comando de Artisan:
php artisan make:test UserTest
Si queremos que sea una prueba unitaria lo escribimos así;
php artisan make:test UserTest --unit
Que emocion 😃 !!
Conozco muy poco de testing!
Excelente, eso era justo lo que quería hacer un API con LARAVEL
en laravel 8 tambien existe el comando:
php artisan test
para ejecutar nuestros tests
@if($post->image)
<img src="{{ $post->get_image}}" class="card-img-top">
@if($post->iframe)
<div class="embed-responsive embed-responsive-16by9">
{!! $post->iframe !!}
</div>
@endif
@elseif($post->iframe)
<div class="embed-responsive embed-responsive-16by9">
{!! $post->iframe !!}
</div>
@endif
Si usan la Terminal de Visual Studio Code pueden usar el código de Italo es decir
vendor/bin/phpunit
pero si usan el Simbolo del Sistema de Windows hay que escribir estando dentro de la carpeta del proyecto
php vendor/phpunit/phpunit/phpunit
Llevaba tiempo esperando el desarrollo de una api con Laravel en platzi. Y con TDD mejor! muy entusiasmado con este modulo
También se pueden ejecutar los test con:
php artisan test
la diferencia con vendor/bin/phpunit es que el anterior cuando encuentra un error lo reporta y aborta los test siguientes.
Me recordo mi tesis donde trabajo con testing ♥
Estoy muy interesado en esto del testing.
Esto lo aprendi en otra clase con el profesor italo, para ver en detalle el resultado de las pruebas.
php vendor/phpunit/phpunit/phpunit --testdox
Que bien, mi primera API con este framework, y con apoyo de TDD !! Esto pinta bastante bien !! ✔
Vamo a darle !!
Para cuando un post tiene ambos contenidos lo converti en un carrusel…
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-body">
@if ($post->image)
@if ($post->iframe)
<div id="gallery" class="carousel slide carousel-fade" data-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item active">
<img src="{{ $post->get_image }}" class="embed-responsive embed-responsive-16by9 pb-5">
</div>
<div class="carousel-item">
<div class="embed-responsive embed-responsive-16by9 pb-5">
{!! $post->iframe !!}
</div>
</div>
</div>
<button class="carousel-control-prev" type="button" data-target="#gallery" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-target="#gallery" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</button>
</div>
@else
<img src="{{ $post->get_image }}" class="embed-responsive embed-responsive-16by9 pb-5">
@endif
@elseif ($post->iframe)
<div class="embed-responsive embed-responsive-16by9 pb-5">
{!! $post->iframe !!}
</div>
@endif
<h5 class="card-title">{{ $post->title }}</h5>
<p class="card-text">
{{ $post->body }}
</p>
<p class="text-muted mb-0">
<em>
Creado por {{ $post->user->name }}
</em>
{{ $post->created_at->format('d M Y') }}
</p>
<a href="{{ url('/') }}" class="btn btn-sm btn-outline-secondary mt-3">Volver</a>
</div>
</div>
</div>
</div>
</div>
@endsection
Ruta en .env:
APP_URL= htt p://127.0.0.1/
por si alguno lo hace en laravel 7
esto lo crea en la carpeta unit
php artisan make:test UserTest --unit
y esto en la carpeta feature
php artisan make:test UserTest
Para no tener que escribir siempre php vendor/phpunit/phpunit/phpunit
a la hora de realizar tests, podéis crear un “atajo” de la siguiente manera:
Vas a package.json
y en scripts
añadís la siguiente linea: "test": "php vendor/phpunit/phpunit/phpunit"
Quedando el archivo de la siguiente manera:
{
"private": true,
"scripts": {
"dev": "npm run development",
"development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"watch-poll": "npm run watch -- --watch-poll",
"hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
"prod": "npm run production",
"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"test": "php vendor/phpunit/phpunit/phpunit"
},
"devDependencies": {
"axios": "^0.17",
"bootstrap-sass": "^3.3.7",
"cross-env": "^5.1",
"jquery": "^3.2",
"laravel-mix": "^1.0",
"lodash": "^4.17.4",
"vue": "^2.5.7"
}
}
Y ahora para realizar los tests solo debeis por consola escribir: npm run tests
Para que no estén escribiendo el comando una y otra vez para ejecutar los test les sugiero agregarlo al package.json como un comando de NPM de esta forma:
"scripts": {
...
"test": "php vendor/phpunit/phpunit/phpunit"
}
De esta manera solo tienen que ejecutar npm test para correr las suit de pruebas 😃
Un test funcional (feature) es que prueba un todo y un unitario (unite) es el que te ayuda a pribar un bloque de codigo
Muy bueno esto de los test, justo estoy creando apis para un aplicación en React Native
Este fue mi código para resolver el tema de bordes tanto para imagen como para video:
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card mb-4">
@if ($post->image)
<img src="{{ $post->get_image }}" class="card-img-top">
@elseif ($post->iframe)
<div id="iframe" class="embed-responsive embed-responsive-16by9">
{!! $post->iframe !!}
</div>
@endif
<div class="card-body">
<h5 class="card-title">{{ $post->title }}</h5>
@if ($post->iframe && $post->image)
<div class="embed-responsive embed-responsive-16by9">
{!! $post->iframe !!}
</div>
@endif
<br>
<p class="card-text">
{{ $post->body }}
</p>
<p class="text-muted mb-0">
<em>
{{$post->user->name}}
</em>
| {{$post->created_at->format('d M Y')}}
</p>
</div>
</div>
</div>
</div>
</div>
@endsection
@if ($post->image)
<img src="{{ $post->get_image}}" class="card-img-top">
@endif
@if($post->iframe)
<div class="embed-responsive embed-responsive-16by9">
{!! $post->iframe !!}
</div>
@endif```
Testing
Laravel por defecto ya viene preparado para trabajar con las pruebas gracias al archivo phpunit.xml
phpunit.xml -> El cual tiene la configuración básica de pruebas el cual tiene un apartado interesante llamado testsuits en los cuales se encuentran las rutas para las pruebas unitarias (unit) y las funcionales (Feature)
los cuales se almacenan en la carpeta tests
**Prueba unitaria: **
Esta enfocada la testeo de pequeñas partes de código.
Para crear una prueba unitaria utilizo el comando
php artisan make:test UserTest --unit
Prueba funcional:
Se utiliza en la creación de APIs debido a que pruban un todo
Estándar de nombramiento de prubas en Laravel ( nombreDeLaClase + Test ) ejemplo UserTest
Para crear una prueba funcional utilizo el comando
php artisan make:test UserTest
Nota: Cuando un sistema crece demasiado nunca lo vamos aprobar completamente.
<testsuites>
<testsuite name="Unit">
<directory suffix="Test.php">./tests/Unit</directory>
</testsuite>
<testsuite name="Feature">
<directory suffix="Test.php">./tests/Feature</directory>
</testsuite>
</testsuites>
Super 😃
Muy interesante hacer pruebas de la calidad del software. Definitivamente Laravel si es un gran framework.
¡Qué interesante este tema! No se lo salten este tema jamás si quieren ser buenos programadores, por favor.
Yo empecé a trabajar sin saber aplicar pruebas y la verdad he pagado las consecuencias.
YO RESOLVÍ EL RETO DE ESTA MANERA
@if ($post->image && $post->iframe)
<img src="{{ $post->get_image }}" class="card-img-top">
<div class="embed-responsive embed-responsive-16by9">
<!-- SE COLOCA !! !! PORQUEE USAMOS UN BLADE Y SE USARA HTML -->
{!! $post->iframe !!}
</div>
@elseif ($post->image)
<img src="{{ $post->get_image }}" class="card-img-top">
@elseif($post->iframe)
<div class="embed-responsive embed-responsive-16by9">
<!-- SE COLOCA !! !! PORQUEE USAMOS UN BLADE Y SE USARA HTML -->
{!! $post->iframe !!}
</div>
@endif```
Gracias por la clase!
Que emoción. Estoy a punto de terminar un bootcamp donde nos inculcaron mucho el test driven development, y la verdad es que haciendo tests podemos estar seguros de que hace y sobre todo que NO hace nuestro código. ¡Lo que sin duda nos ayuda a ser mejores desarrolladores! 😄
@if ($post->image)
<img src="{{ $post->get_image }}" class="card-img-top mb-2">
@endif
@if ($post->iframe)
<div class="embed-responsive embed-responsive-16by9">
{!! $post->iframe !!}
</div>
@endif
En Windows se puede de estas dos formas:
vendor\bin\phpunit
php vendor/phpunit/phpunit/phpunit
Muy buena clase de testing
Las rutas al trabajar con peticiones HTTP, manejan códigos de estado de respuesta HTTP.
Dejo en el siguiente enlace más información.
Me encanta este concepto de hacer testing con PHP.
Una prueba unitaria es aquella que nos ayuda a probar pequeños bloques de codigo y una prueba funcional es la que prueba un todo
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?