logo

Extra Block Types (EBT) - Neue Erfahrung im Layout Builder❗

Extra Block Types (EBT) - gestylte, anpassbare Blocktypen: Diashows, Registerkarten, Karten, Akkordeons und viele andere. Eingebaute Einstellungen für Hintergrund, DOM Box, Javascript Plugins. Erleben Sie die Zukunft der Layouterstellung schon heute.

Demo EBT-Module EBT-Module herunterladen

❗Extra Absatztypen (EPT) - Erfahrung mit neuen Absätzen

Extra Paragraph Types (EPT) - analoger, auf Absätzen basierender Satz von Modulen.

Demo EPT-Module EPT-Module herunterladen

Scroll

Testen eines Drupal 8-Moduls

20/06/2025, by Ivan

Teil VI des praktischen Leitfadens zur Erstellung grundlegender Drupal 8-Module
Von .info zu Tests, nur die Grundlagen

Wenn Sie diesem praktischen Leitfaden zur Erstellung grundlegender Drupal 8-Module von Anfang an gefolgt sind, sind wir jetzt bereit für ein wenig Qualitätssicherung. Wenn Sie einfach loslegen und mitspielen wollen, können Sie das Lorem Ipsum Modul direkt aus Drupal herunterladen.

Lassen Sie uns prüfen, ob das Modul wie vorgesehen funktioniert, indem wir einige eigene Tests schreiben, die direkt über Drupal ausgeführt werden können.

/tests/src/Functional/LoremIpsumTest.php

<?php

namespace Drupal\Tests\loremipsum\Functional;

use Drupal\Tests\BrowserTestBase;

/**
 * Tests für das Lorem Ipsum Modul.
 *
 * @group loremipsum
 */
class LoremIpsumTests extends BrowserTestBase {

  /**
   * Zu installierende Module.
   *
   * @var array
   */
  protected static $modules = array('loremipsum');

  /**
   * Ein einfacher Benutzer.
   *
   * @var \Drupal\user\Entity\User
   */
  private $user;

  /**
   * Führt Initialisierungsschritte aus, die vor jeder Testmethode laufen.
   */
  public function setUp() {
    parent::setUp();
    $this->user = $this->drupalCreateUser(array(
      'administer site configuration',
      'generate lorem ipsum',
    ));
  }
}

Das Testen beginnt mit der Erweiterung der Klasse BrowserTestBase. Wichtig ist, dass Drupal Tests in einer Test-Datenbank ausführt, die erstellt, bei Bedarf befüllt und danach wieder gelöscht wird. Das bedeutet, Sie können sowohl in Entwicklungs-, Staging- als auch – wenn Sie sich trauen! – Produktionsumgebungen testen.

Wie Sie oben sehen, besteht der erste Schritt im Test darin, eine gewisse Grundkonfiguration vorzunehmen, indem die zu testenden Module (nur die echten) definiert, ein Testbenutzer erstellt und ihm die notwendigen Berechtigungen gegeben werden.

Danach testen wir den Zugriff auf eine Dummy-Seite zur Textgenerierung:

/**
   * Testet, ob die Lorem Ipsum Seite erreichbar ist.
   */
  public function testLoremIpsumPageExists() {
    // Anmeldung.
    $this->drupalLogin($this->user);

    // Generator-Test:
    $this->drupalGet('loremipsum/generate/4/20');
    $this->assertSession()->statusCodeEquals(200);
  }

Und das Konfigurationsformular:

  /**
   * Testet das Konfigurationsformular.
   */
  public function testConfigForm() {
    // Anmeldung.
    $this->drupalLogin($this->user);

    // Zugriff auf die Konfigurationsseite.
    $this->drupalGet('admin/config/development/loremipsum');
    $this->assertSession()->statusCodeEquals(200);
    // Prüft, ob Formularelemente existieren und Standardwerte haben.
    $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'),
    );
  }

Als Nächstes testen wir das Absenden des Konfigurationsformulars:

   // Test der Formularübermittlung.
    $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.');

Und überprüfen, ob die neuen Werte vorhanden sind:

    // Testet, ob die neuen Werte vorhanden sind.
    $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',
    );
  }

}

Um die Tests auszuführen:
1. Aktivieren Sie die CORE-Module „Testing“ und „Development: Lorem Ipsum“
2. Gehen Sie zu admin/config/development/testing
3. Wählen Sie den Test „Loremipsum“ aus
4. Klicken Sie auf „Tests ausführen“

Und das war’s für diese Lektion! Wenn Sie möchten, können Sie eine Kopie dieses Codes auf der Projektseite von Lorem Ipsum holen – beachten Sie, dass die aktuelle Version des Entwicklers ein eingebautes Theme enthält. Außerdem, falls Sie Fragen haben, zögern Sie nicht, mich zu kontaktieren. Viel Erfolg beim Coden!

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.