logo

Extra Block Types (EBT) - Nueva experiencia con Layout Builder❗

Extra Block Types (EBT): tipos de bloques con estilo y personalizables: Presentaciones de diapositivas, Pestañas, Tarjetas, Acordeones y muchos más. Configuraciones integradas para fondo, DOM Box y plugins de JavaScript. Experimenta hoy el futuro de la construcción de diseños.

Módulos de demostración EBT Descargar módulos EBT

❗Extra Paragraph Types (EPT) - Nueva experiencia con Paragraphs

Extra Paragraph Types (EPT): conjunto de módulos basado en párrafos de forma análoga.

Módulos de demostración EPT Descargar módulos EPT

Scroll

Pruebas del módulo Drupal 8

20/06/2025, by Ivan

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.