es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo probar una clase que extiende otra clase en PHP?

Soy nuevo en PHPUnit y actualmente estoy tratando de probar una función que autentica a un usuario en el sistema. La función se llama authenticate() y se encuentra dentro de la clase Account.

Prueba

public function passwordAreNotTheSame_Test()
{
    require 'login/app/models/Account.php';
    require 'login/app/controllers/Pages.php';
    require 'login/lib/Controller.php';

    $pages = new Pages();
    $account = new Account($pages);
    $username = "test_name";
    $password = "test_password";
    $cpassword = "invalid_password";
    $email = "email@test.com";
    $Expected = "¡Las contraseñas no coinciden!";
    $Received = $account->register($username, $password, $cpassword, $email);

    $this->assertEquals($Expected, $Received);
}

Sin embargo, mi problema es que el constructor de la clase Account también requiere un controlador llamado Pages. Mi problema es que la clase Pages, ubicada en el archivo Pages.php, extiende la clase Controller. De esta manera:


class Pages extends Controller {
// algún código
}

Entonces, cuando ejecuto mi prueba, obtengo el siguiente problema:

Error: Clase “Controller” no encontrada
C:\xampp\htdocs\apex-management\login\app\controllers\Pages.php:3
C:\xampp\htdocs\apex-management\tests\Unit\RegisterAccountTests.php:13
Tiempo: 00:00.019, Memoria: 8.00 MB

ERRORES! Pruebas: 1, Afirmaciones: 0, Errores: 1. Proceso terminado con código de salida 2

¿Cómo puedo hacer que esta prueba funcione? Quiero aprender a usar PHPUnit, pero no he encontrado documentación en línea para este tipo de problema.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para que esta prueba funcione, debes incluir la clase Controller en tu archivo de prueba antes de ejecutar la prueba. Puedes hacer esto agregando la siguiente línea de código en la parte superior de tu archivo de prueba:

    require 'login/lib/Controller.php';
    

    Esto hará que la clase Controller esté disponible para tu archivo de prueba y, por lo tanto, para la clase Pages que la extiende. Con la clase Controller disponible, tu prueba debería ejecutarse sin errores.

    Es importante tener en cuenta que para proyectos más grandes, manejar todos los archivos requeridos puede volverse engorroso. En esos casos, es posible que desees considerar el uso de una herramienta como Composer para ayudar a gestionar tus dependencias.

Comments are closed.