Pruebas del módulo Drupal 8
Parte VI de la guía práctica para crear módulos básicos en Drupal 8
De .info a pruebas, solo lo básico
Si has seguido desde el principio esta guía práctica para crear módulos básicos en Drupal 8, ahora estamos listos para algo de control de calidad. Si solo quieres saltar y jugar, puedes obtener el módulo Lorem ipsum directamente desde Drupal.
Vamos a comprobar que el módulo funciona como debe, escribiendo algunas pruebas propias que pueden ejecutarse dentro de Drupal.
/tests/src/Functional/LoremIpsumTest.php
<?php namespace Drupal\Tests\loremipsum\Functional; use Drupal\Tests\BrowserTestBase; /** * Pruebas para el módulo Lorem Ipsum. * * @group loremipsum */ class LoremIpsumTests extends BrowserTestBase { /** * Módulos a instalar. * * @var array */ protected static $modules = array('loremipsum'); /** * Un usuario simple. * * @var \Drupal\user\Entity\User */ private $user; /** * Realiza tareas iniciales de configuración que se ejecutan antes de cada método de prueba. */ public function setUp() { parent::setUp(); $this->user = $this->drupalCreateUser(array( 'administer site configuration', 'generate lorem ipsum', )); } }
Las pruebas comienzan extendiendo la clase BrowserTestBase. Es importante destacar que Drupal ejecuta las pruebas en una base de datos de prueba que se crea, llena según sea necesario y luego se destruye. Esto significa que puedes probar en entornos de desarrollo, staging e incluso — ¡si te atreves! — producción.
Como puedes ver arriba, lo primero en las pruebas es realizar una configuración inicial definiendo los módulos a probar (solo para el entorno de prueba), crear un usuario de prueba y otorgarle los permisos necesarios.
Luego probamos el acceso a una página ficticia de generación de texto:
/** * Prueba que la página Lorem ipsum puede ser accedida. */ public function testLoremIpsumPageExists() { // Iniciar sesión. $this->drupalLogin($this->user); // Prueba del generador: $this->drupalGet('loremipsum/generate/4/20'); $this->assertSession()->statusCodeEquals(200); }
Y el formulario de configuración:
/** * Prueba el formulario de configuración. */ public function testConfigForm() { // Iniciar sesión. $this->drupalLogin($this->user); // Acceder a la página de configuración. $this->drupalGet('admin/config/development/loremipsum'); $this->assertSession()->statusCodeEquals(200); // Verificar que los elementos del formulario existen y tienen valores por defecto. $config = $this->config('loremipsum.settings'); $this->assertSession()->fieldValueEquals( 'page_title', $config->get('loremipsum.page_title'), ); $this->assertSession()->fieldValueEquals( 'source_text', $config->get('loremipsum.source_text'), );
A continuación probamos enviar el formulario de configuración:
// Probar envío del formulario. $this->drupalPostForm(NULL, array( 'page_title' => 'Test lorem ipsum', 'source_text' => 'Test phrase 1 \nTest phrase 2 \nTest phrase 3 \n', ), t('Save configuration')); $this->assertSession()->pageTextContains('The configuration options have been saved.');
Y verificamos que los nuevos valores estén presentes:
// Comprobar que los nuevos valores están presentes. $this->drupalGet('admin/config/development/loremipsum'); $this->assertSession()->statusCodeEquals(200); $this->assertSession()->fieldValueEquals( 'page_title', 'Test lorem ipsum', ); $this->assertSession()->fieldValueEquals( 'source_text', 'Test phrase 1 \nTest phrase 2 \nTest phrase 3 \n', ); } }
Para ejecutar las pruebas:
1. habilita los módulos CORE: Testing y Development: Lorem ipsum
2. ve a admin/config/development/testing
3. selecciona la prueba «Loremipsum»
4. haz clic en «Run tests»
¡Y eso es todo por esta lección! Si quieres, toma una copia de este código en la página del proyecto Lorem ipsum — ten en cuenta que en la versión actual del desarrollador hay tematización incorporada. Además, si tienes alguna pregunta, no dudes en escribirme. ¡Feliz codificación!
Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.