testeando dependencias difíciles – Sin Mock

Hace unos días estuve “intentado” mejorar una librería para poder enviar comandos a Varnish y me encontré con unos cuantos problemillas para poder testar la librerías y así llegar a refactorizarla.

Varnish Cache

Según la wikipedia Varnish Cache es un acelerador de aplicaciones web, también conocido como caché de proxy HTTP inversa. Se instala delante de cualquier servidor HTTP y se configura para almacenar en el caché del servidor una copia del recurso solicitado. Esta ideado para aumentar el rendimiento de aplicaciones web con contenidos pesados y APIs altamente consumidas.

Básicamente lo que hace Varnish es ante una petición HTTP guardar la respuesta a esa petición y cada vez que un cliente realice la misma petición devolver el contenido guardado. Esto hace que nuestras aplicaciones multipliquen su velocidad por muchísimo, pero a la vez acarrea algunos problemas para invalidar la caché.

Motivación / el marrón

Un ejemplo básico sería un blog, si utilizamos Varnish para cachear los post ganaremos mucha en performance,pero que pasa si editamos un post ya publicado, para corregir una errata, para actualizarlo o lo que sea . Sería necesario descachear, pero no descachearlo todo, sino solo dicho post.

Una opción sencilla sería cada vez que editamos un post ejecutar el comando

Continúa leyendo “testeando dependencias difíciles – Sin Mock”

Refactorizando legacy code en PHP Parte 5 – creando test sencillos

Refactoring de una aplicación PHP Legacy. Después del intenso post sobre como empezar con loo test unitarios en un refactoring en este vamos a trabajar con la clase Game.php, empezaremos a crear pequeños test de funcionalidades para ir refactorizando. Recordemos que la idea es empezar a refactorizar desde verde para intentar no introducir errores en nuestro refactor.

Creando un “Game”

Lo primero que necesitamos para poder empezar a testear es una instancia de Game, para ello lo primero que haremos sera crearnos nuestra clase específica para test (GameTest) y crear un pequeño test para crear una nueva partida de Trivial.

class GameTest extends PHPUnit_Framework_TestCase
{
    public function testCreateAGameOk()
    {
        $game = new Game();
        $this->assertInstanceOf('Game', $game);
    }
}

Parece sorprendente pero sin mayor problema hemos podido crear una instancia de Game fácilmente y nada se rompe.

Continúa leyendo “Refactorizando legacy code en PHP Parte 5 – creando test sencillos”