Componentes para Laravel

En esta lección vamos a comenzar escribiendo una sencilla prueba unitaria con PHPUnit para comprobar que podemos crear una instancia de una nueva clase, invocar un método y obtener el resultado esperado.

Mira el código en GitHub: actual, resultado, comparación.

Escribiendo la primera prueba unitaria

Comencemos creando una clase de prueba FormTest:

<?php

namespace Tests;

class FormTest extends TestCase
{
    /** @test */
    function renders_a_form()
    {
        $form = new Form;

        $this->assertSame('<form></form>', $form->render());
    }
}

En esta prueba comparamos que el método render imprima la cadena <form></form>.

Hay muchas consideraciones que no estoy tomando en cuenta en esta primera prueba; sin embargo, esto es suficiente para comenzar.

Ejecutemos la prueba y veámosla fallar:

1) Tests\FormTest::opens_a_form
Error: Class ‘Tests\Form’ not found

La clase Form no existe. Vamos a crearla en src/Form.php:

<?php

namespace Styde;

class Form
{

}

Y luego a importarla en FormTest:

<?php

namespace Tests;

use Styde\Form;

class FormTest extends TestCase
{
    //...
}

Recuerda que se va a cargar automáticamente debido al autoloader como aprendimos en Autocarga de clases con Composer y PSR-4.

Re-ejecutemos la prueba:

1) Tests\FormTest::opens_a_form
Error: Call to undefined method Styde\Facades\Form::render()

El método render no existe. Vamos a declararlo en la clase Form:

<?php

namespace Styde\Facades;

class Form
{
    public function render()
    {
        
    }
}

Re-ejecutemos la prueba:

1) Tests\FormTest::opens_a_form
Failed asserting that null is identical to ‘<form></form>’.

Para que la prueba pase necesitamos retornar la cadena '<form></form>' desde el método render:

<?php

namespace Styde\Facades;

class Form
{
    public function render()
    {
        return '<form></form>';        
    }
}

Al re-ejecutar la prueba la veremos pasar. En la próxima lección vamos a interactuar con Laravel a través de Testbench, retornando una vista en vez de una simple cadena de texto.

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

Lección anterior Creación de una nueva librería para Laravel con Composer y PHPUnit Lección siguiente Realizando nuestra primera prueba con Orchestra Testbench