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
