Ergebnis 1 bis 4 von 4

Thema: [re-opened] Contao und Unittests

  1. #1
    Contao-Fan Avatar von eS_IT
    Registriert seit
    21.07.2010.
    Ort
    Werne a. d. Lippe
    Beiträge
    585
    Partner-ID
    6161
    User beschenken
    Wunschliste

    Standard [re-opened] Contao und Unittests

    Hallo zusammen,

    ich schreibe gerade eine Erweiterung (Bundle) für Contao 4.4. Um den Code testen zu können, muss ich bei einigen Komponenten das Framework initialisieren. Früher reichte ein Aufruf von "system/initialize.php". Dies produziert in Contao 4.4 leider nur eine HTML-Ausgabe.

    Hier der konkrete Fall. Ich möchte mit ungefähr folgendem Code den Alias einer Seite auslesen:

    PHP-Code:
    <?php
    class MyPasgeTest
    {
        public function 
    getPageUrl($intPageId)
        {
            
    $pm     = new PageModel();
            
    $page   $pm->findById($intPageId);
            
            return 
    $page->alias;
        }
    }
    Leider bekomme ich wenn ich nun einen Test schreibe immer den folgenden Fehler:

    "Fatal error: Class 'Model' not found in xxx/htdocs/vendor/contao/core-bundle/src/Resources/contao/models/PageModel.php on line 255"

    Ist ja auch logisch, eigentlich müsste es ja nicht Model, sondern \Contao\Model heißen. Ich muss also scheinbar Contao irgendwie initialisieren. Hat vielleicht jemand eine Idee? Stehe ich total auf dem Schlauch, oder ist es wirklich recht kompiziert?
    Geändert von eS_IT (10.03.2018 um 10:01 Uhr)
    Viele Grüße,
    eS_IT
    --
    e@sy Solutions IT - Ihr Partner für professionelle Softwareentwicklung
    Website - Contao Codebook - Partnerprofil - GitHub

  2. #2
    Contao-Urgestein
    Registriert seit
    29.10.2009.
    Ort
    Magdeburg
    Beiträge
    2.020
    Partner-ID
    626
    User beschenken
    Wunschliste

    Standard

    Wirf mal einen Blick auf https://github.com/contao/test-case. Dort werden einige Beispiele gezeigt. Die Unit-Tests von Contao selbst können auch Auskunft geben. Grundsätzlich hat man unter Contao 4 ja das ContaoFramework, welches man initialisieren kann. Grundsätzlich solltest du es vermeiden mit fremden Code in den eigenen Unittests zu arbeiten. Entweder dies wegabstrahieren (hier z.B. hinter ein Repository) oder mit Mocks arbeiten.

  3. #3
    Contao-Fan Avatar von eS_IT
    Registriert seit
    21.07.2010.
    Ort
    Werne a. d. Lippe
    Beiträge
    585
    Partner-ID
    6161
    User beschenken
    Wunschliste

    Standard

    Vielen Dank für den Hinweis, genau das habe ich gesucht.
    Viele Grüße,
    eS_IT
    --
    e@sy Solutions IT - Ihr Partner für professionelle Softwareentwicklung
    Website - Contao Codebook - Partnerprofil - GitHub

  4. #4
    Contao-Fan Avatar von eS_IT
    Registriert seit
    21.07.2010.
    Ort
    Werne a. d. Lippe
    Beiträge
    585
    Partner-ID
    6161
    User beschenken
    Wunschliste

    Standard

    Leider gelinkt es mir doch nicht, die Klasse PageModels zu nutzen. Ich habe contao/test-case installiert und leite meinen Test davon ab. Sobald ich aber versuche auf PageModel zuzugreifen, bekommt ich die oben genannte Fehlermeldung. Auch der Versuch die Klasse über $this->mockClassWithProperties(\Contao\PageModel::clas s, $props); zu mocken, führt sofort zum Fehler. Es scheint so, als ob die Übersetzung in den Contao-Namespace nicht funktioniert.

    Ich verwende übrigens die Managed-Edition, da die Standard-Edition ja eingestellt wurde. Wenn jemand also eine Idee hat, wie man zukünftig mit der Managed-Edition vernünftig entwickeln und testen kann, wäre ich für Tipps und Anregungen sehr dankbar. Vielleicht hat ja jemand ein lauffähiges Setup und wäre bereit es zu teilen.
    Viele Grüße,
    eS_IT
    --
    e@sy Solutions IT - Ihr Partner für professionelle Softwareentwicklung
    Website - Contao Codebook - Partnerprofil - GitHub

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •