Gerbil, un framework TDD para JavaScript en 249 líneas

No, no nos hemos vuelto locos ni hemos cambiado la temática del blog, pero si que vamos a hablar sobre <a href=""https://github.com/elcuervo/gerbil">Gerbil o la rata del desierto, seguro que hemos visto a uno de estos en alguna pajarería elguna vez.

Siguiendo nuestra linea de descubrimiento de herraimientas desarrolladas en España y pasises latinoamericanos, hoy os traigo Gerbil (pero no el roedor) un miniframework desarrollado en JavaScript para NodeJS que nos permite hacer TDD de nuestro código JavaScript sin necesidad de utilizar un navegador web.

El framework en cuestión ha sido desarrollado por Bruno Aguirre, Uruguayo residente en Montevideo y presenta algunas características que han llamando poderosamente mi atención.

Este es un framework de TDD al estilo de mocha (sucesor de expresso) pero con enormes diferencias respecto al mismo. Para empezar el tamaño de la librería, Gerbil pesa tan solo 6,5kb claro que también sus pretensiones son mucho menores.

Gerbil cuenta con los métodos pending, assert, assertEual y assertThrow así como con un Logger personalizable, no soporta stubs, mocks ni spies pero lo que me ha llamado la atención es la elegante sintaxis utilizada para definir los tests:

scenario("Validate some stuff", {
  'before': function() {
      this.a = 2;
   },
    
  'stuff': function(g) {
      return g.pending("TODO");
   },
        
  'test': function(g) {
      g.assert(true);
      g.assertEqual(1);
   },
                
   'cuteness': function(g) {
      g.assert(true);
   },
                    
   'take a long time': function(g) {
      for(var i = 0; i < 10000000; i++) {}
      g.assertEqual(i, 10000000);
   }
});

Como dice el autor, Gerbil es un framework minimalista y super simple, pero no por ello deja de ser elegante, y todo esto en tan solo 249 líneas de código JavaScript.

Si estás pensando en escribir un framework de TDD o simplemente sientes curiosidad, te recomiendo que le eches un ojo al código fuente pues es claro y sencillo.

Más Información | Página GitHub del Proyecto En Genbetadev | TDD en Genebetadev

Portada de Genbeta