Mehrere Dispatches in Plugin UnitTest

Hallo Shopware-Community,

Wir entwickeln gerade ein Shopware-Plugin (Neue Plugin Struktur). Technisch gesehen ist die Entwicklung abgeschlossen. Das Plugin macht was es soll. Nun wollen wir wie es sich gehört auch UnitTests schreiben um das abzusichern. U.a. testen wir dabei einen Controller und seine Actions. In unserer Test-Klasse (erbt von \Enlight_Components_Test_Controller_TestCase) haben wir dazu mehrere Test-Methoden, welche über $this->dispatch(); die jew. Action aufruft:

$this->Request()->setParam
    array(
        "parameter" => "value"
    )
);

$dispatchUrl = '/Controller/save';
$this->dispatch($dispatchUrl);

In der ersten Test-Methode läuft alles gut durch. Der Controller wird aufgerufen und er macht was er soll. Ab der zweiten (und jeder weiteren) gibt es jedoch eine Smarty-Exception:

SmartyException: Unable to load template snippet 'frontend/plugin_name/index.tpl|frontend/plugins/seo/index.tpl'

Nachdem wir dem Code gefolgt sind, haben wir festgestellt, dass die reset-Methode in der Test-Klasse das Problem verursacht. Beim zurücksetzen der Plugins werden offenbar die Plugins der neuen Plugin-Struktur nicht neu initialisiert. Jedenfalls fehlen die Namespaces dieser Plugins. Die der alten sind korrekt vorhanden. Es fehlen dabei aber nicht nur unserer Plugin-Namespaces sondern auch die anderer Plugins. Eben alle neuen.

Da wären wir beim ersten Punkt:

Hatte jemand einen ähnlichen Fall? Weiß jemand ob/was wir falsch machen oder ob das einfach ein Bug ist?

Im weiteren Verlauf haben wir die reset-Methode überschrieben und ihren Inhalt leer gelassen, sodass also quasi nichts zurück gesetzt wird.
Der Smarty-Fehler kommt nun nicht mehr und scheinbar werden in den weiteren Test-Methoden die dispatches ausgeführt. Theoretisch… Denn während die Testfälle nun (abgesehen von den asserts) durchlaufen wird der Controller mit seinen Actions nach dem ersten mal nicht mehr aufgerufen (getestet durch ein die()).

Zum zweiten Punkt:

Weiß jemand wie man die Controller bzw die Actions auch nach dem ersten mal aufrufen kann?

Viele Grüße
Lars

Die neuen Plugins werden eigentlich auch intialisiert: shopware/TestCase.php at 5.4 · shopware/shopware · GitHub

 

@Shyim schrieb:

Die neuen Plugins werden eigentlich auch intialisiert: https://github.com/shopware/shopware/blob/5.4/engine/Library/Enlight/Components/Test/Controller/TestCase.php#L184

 

Das haben wir auch gesehen. Aber die Namespaces beinhalten danach nur noch das Bare/Responsive-Theme und die alten Plugins.