Computador con pruebas pasando

He estado escribiendo pruebas para un nuevo proyecto en el que estoy trabajando, utilizando el componente de pruebas de aplicación de Laravel (por supuesto) y me he dado cuenta que tiendo a repetir en todas mis pruebas el mismo encabezado, por ejemplo:

<?php

use Illuminate\Foundation\Testing\DatabaseTransactions;

class CreatePostsTest extends TestCase
{
    use DatabaseTransactions;

    // Pruebas aqui
}

Aunque no parezca demasiado, en todas mis pruebas de aplicación debo incluir el trait DatabaseTransactions y puede que necesite incluir otro trait o algunas funciones helpers que son comunes sólo para mis pruebas de aplicación. Así que en vez de repetir este código una y otra vez, en mis proyectos he estado creando un nuevo TestCase llamado FeatureTestCase el cuál incluye al menos lo siguiente:

<?php

use Illuminate\Foundation\Testing\DatabaseTransactions;

class FeatureTestCase extends TestCase
{
    use DatabaseTransactions;

    // metodos helpers aqui
}

Luego el encabezado de mis pruebas se reduce a lo siguiente:

<?php

class CreatePostsTest extends FeatureTestCase
{
   // pruebas aqui
}

Por supuesto para que esto funcione debo modificar mi archivo composer.json y agregar FeatureTestCase a la sección autoload-dev:

    "autoload-dev": {
        "classmap": [
            "tests/TestCase.php",
            "tests/Features/FeatureTestCase.php",
        ]
    }

Y después ejecutar composer dump-autoload.

Otra recomendación que puedo darte es que no utilices la palabra public en tus métodos de prueba ya que es opcional ponerla, puesto que por defecto es la visibilidad de un método en una clase.  Adicionalmente, escribe los nombres de los métodos en «snake_case» en vez de «camelCase» es decir:

function test_user_can_create_a_post() en vez de:  public function testUserCanCreateAPost()

De esta manera, al escribir los nombres de los métodos de una prueba serán más legibles, ya que dichos nombres deben ser descriptivos y por ende tienden a ser largos.

Pueden parecer 2 tips muy simples y de hecho lo son, pero harán que tus pruebas se lean un poco mejor y más rápido, y aunque sean «sólo pruebas» también son código que tendrás que leer y mantener por mucho tiempo.

Las pruebas son una excelente forma de documentar la funcionalidad (features) de tu proyecto y asegurarte además que las mismas estén funcionando adecuadamente. Así que el tiempo que uses en definir pruebas de forma adecuada, será una excelente inversión para todo el ciclo de vida de tu aplicación.

Si quieres aprender más sobre pruebas no dejes de ver nuestro nuevo curso Crea una aplicación con Laravel 5.3 donde utilizo estos y muchísimos otro tips y prácticas de desarrollo siguiendo la metodología TDD. También puedes ver los siguientes tutoriales y lecciones:

Únete a nuestra comunidad en Discord y comparte con los usuarios y autores de Styde, 100% gratis.

Únete hoy

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.