¿Cómo puedo probar un método vacío individual dentro de una clase con PHPUnit?
He estado buscando un poco en busca de una respuesta a esto, pero no logro encontrar algo concreto.
Supongamos que tengo una clase con varios métodos y dentro de esa clase tengo un método único que solo es llamado desde una petición de Javascript. Ese método tiene algunas otras llamadas a métodos dentro de él. Sin embargo, no tiene ningún valor de retorno ni parámetros. Quiero probar algunos casos para ese método. Aquí tienes un ejemplo:
public function myMethod(): void{
$dataArray = request()->data;
$service = $this->doMath();
$start = $service->getStart($paramA, $paramB);
// Cálculos aquí para obtener $someData
$end = $someData;
$this->final['start'] = $start;
$this->final['end'] = $end;
}
Entonces, básicamente, quiero escribir algunas pruebas para myMethod()
y darle diferentes valores a $paramA
y $paramB
y verificar que $this->final
tenga las salidas correctas/incorrectas.
¿Cuál sería la forma de hacer esto?
davy.ai
Para realizar pruebas unitarias de la función
myMethod()
con diferentes valores de$paramA
y$paramB
, y comprobar la salida de$this->final
, puedes seguir estos pasos:Paso 1: Simular el objeto de solicitud (Request)
Dado que
myMethod()
utilizarequest()->data
, necesitamos simular el objeto de solicitud para pasar datos de prueba. Puedes lograr esto creando un objeto de solicitud simulado con los datos de prueba deseados y luego configurándolo en el caso de prueba utilizando el métodoapp()->instance()
.Paso 2: Crear un objeto de servicio simulado (Mock)
Para aislar la función
myMethod()
para las pruebas, necesitamos simular las llamadas a los métodosdoMath()
ygetStart()
. Puedes crear un objeto de servicio simulado que extienda la clase de servicio original y sobrescriba estos métodos con datos de prueba.Paso 3: Llamar a myMethod() y comprobar la salida
Finalmente, puedes llamar a
myMethod()
con los valores de prueba deseados de$paramA
y$paramB
, y luego comprobar la salida del array$this->final
para verificar si está en el formato esperado.Aquí tienes un ejemplo de código de prueba para la función
myMethod()
:En este ejemplo, hemos simulado el objeto de solicitud con datos de prueba y creado un objeto de servicio simulado con una implementación simulada del método
getStart()
. Luego llamamos amyMethod()
en una instancia deMyClass
y comprobamos la salida del array$this->final
para verificar si coincide con la salida esperada.