Web BizarroWeb Bizarro

Suscríbete a nuestro Newsletter

X

Únete a nuestra lista de correos para recibir semanalmente actualizaciones de nuestro contenido.

BDD para php con behat

BDD para php con behat 12.AUG.15

Alvaro José Rios Ch
Fundador WebBizarro

Siempre tratamos de mostrar herramientas que nos conviertan en programadores más profesionales y que le den a nuestro trabajo mucha más calidad lo que eventualmente se convertirá en más ganancias para nosotros, por eso queremos hablarles hoy del behavior-driven-develoment o BDD.

La idea principal del BDD es escribir lo que debe hacer una característica en lenguaje legible y luego implementar ese comportamiento en el software. Es algo muy útil ya que te ayuda a tener una mejor perspectiva de lo que debe hacer el código y facilita las pruebas.

Behat es una herramienta para php que se basa en este concepto para escribir código para nuestras aplicaciones, supongamos que deseamos implementar la función ls de unix, entonces definimos el comportamiento.

Feature: ls
    In order to see the directory structure
    As a UNIX user
    I need to be able to list the current directory's contents

    Scenario:
        Given I am in a directory "test"
        And I have a file named "foo"
        And I have a file named "bar"
        When I run "ls"
        Then I should get:
            """
            bar
            foo
            """

Como ven es algo muy simple y fácil de leer.

Luego de esto solo tendrán que ejecutar behat dentro del directorio del proyecto, esto les dará un resultado como este.

Después de esto solo debemos implementar estas funciones en php.

# features/bootstrap/FeatureContext.php
<?php
    use Behat\Behat\Context\BehatContext,
    Behat\Behat\Exception\PendingException;
    
    use Behat\Gherkin\Node\PyStringNode,
    Behat\Gherkin\Node\TableNode;
    
    class FeatureContext extends BehatContext
    {
        /**
        * @Given /^I am in a directory "([^"]*)"$/
        */
        public function iAmInADirectory($dir)
        {
            if (!file_exists($dir)) {
                mkdir($dir);
            }
        chdir($dir);
        }
    }

Bien después de que todo el código este listo podemos ejecutar nuevamente el comando behat en el directorio.

Bien como puedes ver cada uno de los pasos en el escenario están implementados y pasaron la prueba, luego de eso puedes crear nuevos escenarios para esta misma característica y de esta manera probarla en profundidad.

Una muy buena herramienta para los desarrolladores de PHP sin embargo si programas en otro lenguaje no dejes de buscar herramientas que te ayuden a implementar BDD en tus proyectos y claro si conoces alguna compártela con toda la comunidad aquí abajo en los comentarios.