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