# Mehrere Dispatches in Plugin UnitTest

**URL:** <https://forum.shopware.com/t/mehrere-dispatches-in-plugin-unittest/54003>\
**Category:** Programmierung\
**Created:** [10. Juli 2018 um 18:13 UTC](https://forum.shopware.com/t/mehrere-dispatches-in-plugin-unittest/54003 "2018-07-10T18:13:34Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![lkraemer](https://avatars.discourse-cdn.com/v4/letter/l/9e8a1a/32.png) [@lkraemer](https://forum.shopware.com/u/lkraemer)\
**Post date:** [10. Juli 2018 um 18:13 UTC](https://forum.shopware.com/t/mehrere-dispatches-in-plugin-unittest/54003/1 "2018-07-10T18:13:34Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![shyim](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/shyim/32/7681_2.png) [@shyim](https://forum.shopware.com/u/shyim)\
**Post date:** [10. Juli 2018 um 18:57 UTC](https://forum.shopware.com/t/mehrere-dispatches-in-plugin-unittest/54003/2 "2018-07-10T18:57:58Z")

</div>

Die neuen Plugins werden eigentlich auch intialisiert:&nbsp;[shopware/TestCase.php at 5.4 · shopware/shopware · GitHub](https://github.com/shopware/shopware/blob/5.4/engine/Library/Enlight/Components/Test/Controller/TestCase.php#L184)

&nbsp;

---

<div class="post-metadata">

**Author:** ![lkraemer](https://avatars.discourse-cdn.com/v4/letter/l/9e8a1a/32.png) [@lkraemer](https://forum.shopware.com/u/lkraemer)\
**Post date:** [10. Juli 2018 um 21:22 UTC](https://forum.shopware.com/t/mehrere-dispatches-in-plugin-unittest/54003/3 "2018-07-10T21:22:51Z")

</div>

> [@Shyim schrieb:](https://forum.shopware.com/profile/20792/Shyim "Shyim")
> 
> Die neuen Plugins werden eigentlich auch intialisiert:&nbsp;[https://github.com/shopware/shopware/blob/5.4/engine/Library/Enlight/Components/Test/Controller/TestCase.php#L184](https://github.com/shopware/shopware/blob/5.4/engine/Library/Enlight/Components/Test/Controller/TestCase.php#L184)
> 
> &nbsp;

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