Mockery es una potente librería de PHP, comúnmente utilizada en las pruebas de software para simular (mock) o emular (stub) el comportamiento de los objetos. Permite aislar el código que se está probando de sus dependencias externas, haciendo que las pruebas unitarias sean más fáciles y fiables.
En el desarrollo de software, los módulos o clases a menudo dependen unos de otros. Al probar un módulo específico, controlar el comportamiento de los módulos dependientes puede ser difícil. Por ejemplo, el módulo que se está probando puede llamar a una API externa, una base de datos u otro servicio. Las pruebas en este caso dependerían de la disponibilidad y estabilidad de los componentes externos, lo que causaría dificultades y reduciría la precisión de los resultados de las pruebas.
Mockery resuelve este problema al permitir que los desarrolladores simulen el comportamiento de los componentes dependientes. En lugar de llamar a la API externa real, podemos usar Mockery para crear un “objeto simulado” que emule esa API. Este objeto simulado devolverá valores predefinidos, haciendo que las pruebas sean independientes y predecibles.
El uso de Mockery ofrece muchos beneficios para el proceso de prueba:
- Control del comportamiento de las dependencias: Mockery permite definir con precisión el comportamiento de los objetos dependientes, lo que facilita la prueba de casos específicos.
- Aislamiento de las pruebas: Mockery ayuda a aislar el código que se está probando de los componentes externos, garantizando la independencia de las pruebas.
- Mayor velocidad de las pruebas: Mockery reduce el tiempo de ejecución de las pruebas al eliminar tareas que consumen mucho tiempo, como llamar a API externas o consultar bases de datos.
- Mejora de la cobertura de las pruebas: Mockery permite probar casos difíciles o imposibles de probar utilizando objetos reales.
Usar Mockery es bastante sencillo. Primero, es necesario instalar la librería a través de Composer:
{
"require-dev": {
"mockery/mockery": "1.0.0-alpha1@dev"
}
}
Después, se puede usar Mockery para simular una clase o un método específico:
// Simular toda la clase
$mock = Mockery::mock('path-to-mock-class');
// Simular un método específico
$mock = Mockery::mock('path-to-mock-class[method]');
Mockery ofrece muchas opciones para definir el comportamiento del objeto simulado:
// Definir el número de veces que se llama al método
$mock->shouldReceive('methodName')->times(3);
// Definir los parámetros de entrada
$mock->shouldReceive('methodName')->with($arg1, $arg2);
// Definir el valor de retorno
$mock->shouldReceive('methodName')->andReturn($value);
En resumen, Mockery es una herramienta útil para las pruebas de software, que facilita que la comprobación del código fuente sea más sencilla, rápida y fiable. El uso de Mockery ayuda a los desarrolladores a centrarse en la lógica del código que se está probando sin verse afectados por factores externos.