Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

PHPUnit-Tests ohne Datenbank

Schnelle PHPUnit-Tests für Code von Erweiterungen schreiben, die keine Datenbank brauchen - der Bootstrap, Ihre Klassen laden, Dienste, Validatoren, den Hin- und Rückweg der Zeichenkettenform von Datentypen und…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/creators/app-creators/db-less-phpunit-tests.md

On this page

This page is a translation. Read the English original

PHPUnit-Tests ohne Datenbank

Diese Seite ist für Anwendungsentwickler, die Unit-Tests schreiben, die überall in Sekunden laufen. Die phpunit.xml von Exponential lädt tests/bootstrap.php, das den Autoloader von Composer und das Test-Toolkit lädt, den Kernel aber nicht startet; Tests, die nichts weiter brauchen, laufen ohne Datenbank (PHPUnit).

Inhalt

  1. Was sich ohne Datenbank testen lässt
  2. Eine Testklasse
  3. Ihre Klassen laden
  4. Ausführen
  5. Tests den Dateien zuordnen

Was sich ohne Datenbank testen lässt

CodeBeispiele für Prüfungen
Dienste mit reiner Logikdie Summen eines Berichts, das Parsen eines Imports
Validatorenakzeptierte und abgelehnte Eingaben, Fehlertexte
Zeichenkettenformen von DatentypenfromString( toString( x ) ) ergibt x
Template-Operatorenmodify() setzt den erwarteten Wert
Auswertung von EinstellungenStandardwerte, wenn ein Schlüssel fehlt
SicherheitshelferEscaping, Positivlisten, Prüfung von Weiterleitungen

Halten Sie Datenbankzugriffe aus diesen Klassen heraus oder hinter einer Schnittstelle, die Sie im Test ersetzen können.

Eine Testklasse

<?php
// extension/expdemo/tests/expDemoColorValidatorTest.php
class expDemoColorValidatorTest extends PHPUnit\Framework\TestCase
{
    public function testAcceptsHexColors()
    {
        $this->assertTrue( expDemoColorValidator::isValid( '#a1b2c3' ) );
    }

    public function testRefusesOtherText()
    {
        $this->assertFalse( expDemoColorValidator::isValid( 'red; background: url(x)' ) );
    }
}

Ihre Klassen laden

Klassen in der Autoload-Map der Erweiterungen werden gefunden, sobald php bin/php/ezpgenerateautoloads.php -e gelaufen ist. Ein Test, der in einem separaten Checkout läuft, kann die Klassendatei per require_once laden, wenn sie nicht über den Autoloader erreichbar ist, so wie es die eigenen Tests der Hilfe im Kernel tun (tests/tests/kernel/classes/help/).

Ausführen

vendor/bin/phpunit extension/expdemo/tests/
vendor/bin/phpunit --filter testRefusesOtherText extension/expdemo/tests/

Führen Sie die Tests in der CI Ihrer Erweiterung bei jedem Push und Pull Request aus (Continuous Integration für Erweiterungen).

Tests den Dateien zuordnen

Der Kernel pflegt tests/test-map.json, das Quelldateien den Tests zuordnet, die sie abdecken, sodass eine Änderung vor einem Push nur ihre eigenen Tests ausführt. Machen Sie es in einer großen Erweiterung genauso: eine kleine Zuordnungsdatei und ein Skript, das die Tests der geänderten Dateien auswählt.

Verwandte Seiten

Werden Sie Exponential-Partner

Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x