Behat PHP: guía completa con ejemplos prácticos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Behat PHP: guía completa con ejemplos prácticos

1. ¿Qué es Behat y para qué sirve?

Behat es un potente framework de PHP para Behaviour-Driven Development (BDD, desarrollo guiado por comportamiento). Permite describir el comportamiento de una aplicación en un lenguaje casi natural (Gherkin), y luego verificar automáticamente si el código cumple con esa descripción. Behat actúa como un puente entre los miembros no técnicos del equipo (gerentes, analistas, clientes) y los desarrolladores, proporcionando un documento "vivo" único que es a la vez una especificación y un conjunto de pruebas.

¿Para qué sirve Behat? Principalmente, para mejorar la comunicación y reducir el riesgo de requisitos mal interpretados. En lugar de escribir pruebas unitarias técnicas que verifican cómo funciona una función, escribes escenarios que describen qué debe hacer el sistema desde la perspectiva del usuario. Por ejemplo, en vez de "testLogin()", escribes "El usuario ingresa datos correctos y hace clic en 'Iniciar sesión'". Esto hace que las pruebas sean legibles para todos los involucrados. Además, Behat es ideal para pruebas de integración y E2E (end-to-end) de aplicaciones web, APIs y comandos de consola.

Behat se integra estrechamente con Mink, una biblioteca para emular navegadores, lo que permite probar interfaces web. Sin embargo, también se puede usar para probar código PHP puro sin contexto web. La idea principal de BDD implementada en Behat es: "Primero escribe el escenario, luego escribe el código que hace que el escenario sea exitoso".

2. Instalación

La instalación de Behat se realiza a través de Composer, el gestor de paquetes estándar de PHP. Para ello, ejecuta el siguiente comando en la terminal, en la raíz de tu proyecto:

composer require --dev behat/behat

Este comando instalará Behat y todas sus dependencias en el directorio vendor/ y añadirá la entrada correspondiente en el archivo composer.json.

Si planeas probar aplicaciones web, también necesitarás Mink y uno de sus controladores (por ejemplo, Goutte para un funcionamiento rápido sin JavaScript, o Selenium2 para trabajar con un navegador real):

composer require --dev behat/mink-extension behat/mink-goutte-driver behat/mink-selenium2-driver

Después de la instalación, inicializa Behat en tu proyecto:

vendor/bin/behat --init

Este comando creará la estructura de directorios: features/ (para los archivos .feature) y features/bootstrap/ (para las clases de contexto FeatureContext.php).

3. Inicio rápido: ejemplo mínimo funcional

Crea el archivo features/hello.feature:

Feature: Hola Mundo
  Para ver cómo funciona Behat
  Como desarrollador
  Necesito poder ejecutar una prueba simple

  Scenario: Saludar al usuario
    Given Tengo un programa de saludo
    When Lo ejecuto con el nombre "Mundo"
    Then Debería ver "¡Hola, Mundo!"

Ahora edita el archivo features/bootstrap/FeatureContext.php:

greeting = function($name) {
            return "¡Hola, " . $name . "!";
        };
    }

    /**
     * @When Lo ejecuto con el nombre :name
     */
    public function iRunItWithName($name)
    {
        $this->output = call_user_func($this->greeting, $name);                    

Recommendations