Los test unitarios en Laravel son esenciales para asegurar que las funciones y componentes de una aplicación web funcionen correctamente. Al usar el decorador @dataProvider
de PHPUnit, puedes ejecutar un solo test con múltiples conjuntos de datos, lo que facilita probar varios casos sin duplicar el código. Este método es muy útil cuando tienes que validar varias entradas y salidas esperadas en tus pruebas.
@dataProvider
en Laravel
Laravel se basa en PHPUnit para sus tests, lo que permite integrar el uso de @dataProvider
en tus test unitarios sin configuraciones adicionales. @dataProvider
facilita la ejecución de un mismo test con diferentes datos de entrada.
1. Crear un test unitario: Primero, asegúrate de tener un test unitario en tu aplicación. Puedes crearlo con el siguiente comando en la terminal:
php artisan make:test NombreDelTest --unit
2. Definir el método @dataProvider: En la clase del test, define un método con los datos que deseas probar. Este método debe devolver un array de arrays, donde cada sub-array representa un conjunto de datos para el test.
3. Implementar el test con el @dataProvider
: Asocia el método del @dataProvider al test unitario para que tome los datos de allí y los ejecute automáticamente.
Supongamos que tienes una función llamada suma
en una clase Calculadora
, que simplemente devuelve la suma de dos números. Queremos probar varios casos usando @dataProvider
.
// Tests/Unit/CalculadoraTest.php
use Tests\TestCase;
class CalculadoraTest extends TestCase
{
/**
* Método que provee los datos de prueba.
*
* @return array
*/
public function sumaProvider()
{
return [
'suma de números positivos' => [2, 3, 5],
'suma de un positivo y un negativo' => [2, -3, -1],
'suma de dos números negativos' => [-2, -3, -5],
'suma con cero' => [0, 5, 5],
];
}
/**
* @dataProvider sumaProvider
*/
public function testSuma($a, $b, $resultadoEsperado)
{
$calculadora = new Calculadora();
$this->assertEquals($resultadoEsperado, $calculadora->suma($a, $b));
}
}
En este ejemplo:
sumaProvider
es el método que proporciona los datos. Cada sub-array representa un conjunto de entradas y el resultado esperado.
@dataProvider sumaProvider
se coloca sobre el método de prueba testSuma
, que recibe los datos del método sumaProvider
.
Para ejecutar el test, puedes usar el siguiente comando en la terminal:
php artisan test --filter=CalculadoraTest
Laravel ejecutará el test testSuma
cuatro veces, cada una con un conjunto de datos diferentes proporcionados por sumaProvider
.
Para más información, puedes consultar la documentación oficial de Laravel Testing y PHPUnit Data Providers.
Jorge García
Fullstack developer