Contao-Camp 2024
Ergebnis 1 bis 5 von 5

Thema: Bootstrap Contao 4 Framework in PhpUnit

  1. #1
    Contao-Nutzer
    Registriert seit
    09.05.2017.
    Beiträge
    5

    Standard Bootstrap Contao 4 Framework in PhpUnit

    Ich versuche grade bei Contao 4.9 Manged Edition PhpUnit einzusetzen.

    Mithilfe von https://github.com/contao/test-case bin ich auch schon weitergekommen.
    Wenn ich nun folgendes versuche:

    PHP-Code:
    class SomeModuleTest extends ContaoTestCase
    {
        public function 
    testSomething()
        {
            
    $framework $this->mockContaoFramework();
            
    $framework->expects($this->atLeastOnce())
                ->
    method('initialize');
            
    $container $this->getContainerWithContaoConfiguration();
            \
    Contao\System::setContainer($container);

            
    $moduleModel         = \Contao\ModuleModel::findById(376);
         }

    erhalte ich diese Fehlermeldung:

    Symfony\Component\DependencyInjection\Exception\Pa rameterNotFoundException : You have requested a non-existent parameter "contao.resources_paths".

    Ich habe die Vermutung, dass ich irgendwas beim Bootstrappen des Contao Frameworks falsch mache. Leider finde ich da auch nicht sehr viel Dokumentation zum Testing in Contao, vorallem was eigene Module angeht.

    Möglicherweise kann ja hier jemand weiterhelfen?
    Geändert von UB3RL33T (26.03.2020 um 16:55 Uhr)

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

    Standard

    PHP-Code:
     $moduleModel         = \Contao\ModuleModel::findById(376); 
    Du stellst eine DB-Abfrage im Unit-Test. Wie soll das funktionieren? Solange keine Functional Tests durchgeführt werden, ist keine DB-Verbindung da.

    Schaue dir doch die Tests von Contao an, da sieht man auch wie man eine Model-Abfrage mocken kann (vorausgesetzt der Code ist entsprechend aufgebaut und nutzt die Adapter)

    https://github.com/contao/contao/blo...st.php#L37-L39

  3. #3
    Contao-Nutzer
    Registriert seit
    09.05.2017.
    Beiträge
    5

    Standard

    Hey webstar,

    danke für die Antwort. Du hast natürlich recht, innerhalb von Unittests kann(sollte) ich keine DB-Abfragen versuchen.

    Ich hab mit Symfony keine wirkliche Erfahrung und über Contao 4 auch nur grobe Kenntnisse. Da wollte ich mir mit Tests etwas Einblick & Sicherheit verschaffen.

    Zitat Zitat von webstar Beitrag anzeigen
    (vorausgesetzt der Code ist entsprechend aufgebaut und nutzt die Adapter)
    Trifft den Nagel auf den Kopf. In deinem Beispiel werden Wrapper in Form von Adaptern für getNewsModel() eingesetzt. Bei dem ListingModule ist das wohl noch nicht der Fall (https://github.com/contao/contao/blo...uleListing.php).


    Ich schätze um sowas ausführen zu können:
    PHP-Code:
            $moduleModel = new \Contao\ModuleModel(); //https://github.com/contao/contao/blob/master/core-bundle/src/Resources/contao/models/ModuleModel.php
            
    $listing = new \Contao\ModuleListing($moduleModel); 
    müsste ich da das Adapter-Konzept implementieren.

    EDIT: Gibt es denn sonst keine Möglichkeit das ContaoFramework mit Datenbank in den Tests zu booten?
    Geändert von UB3RL33T (30.03.2020 um 17:53 Uhr)

  4. #4
    Contao-Nutzer
    Registriert seit
    17.10.2014.
    Beiträge
    72

    Standard

    Es gibt einen FunctionalTestCase https://github.com/contao/test-case/...alTestCase.php aber ich weiß nicht wie man den verwendet. Und es gibt sogar noch einen DatabaseTrait welcher DB Fixtures setzen kann https://github.com/contao/test-case/...abaseTrait.php

    Der functionalTestCase macht in erster Linie ein bootKernel() und ist von WebTestCase abgeleitet müsste das nicht helfen?
    Auch wenn WebTestCase natürlich für Controller-Tests gedacht ist, müsste es trotzdem möglich sein, auch auf Objekte direkt zuzugreifen.

  5. #5
    Contao-Nutzer
    Registriert seit
    17.10.2014.
    Beiträge
    72

    Standard

    Hey webstar,

    ist das was UB3RL33T vor hat in Functional Tests machbar?
    Ich glaube wenn wir rausgefunden haben, wie das funktioniert, sollten wir einen PR zu den Contao Docs machen, oder gibt es schon eine Dev-Testdoku?

    Grüße,

    Alex

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
  •