Ich möchte in meinem Plugin den CategoryService dekorieren, jedoch wird das Event in meinem Testcase nicht gefeuert: $this-\>subscribeEvent( 'Enlight\_Bootstrap\_AfterInitResource\_shopware\_storefront.category\_service', 'decorateCategoryService' );
Die Methode ‘decorateCategoryService’ wird nicht aufgerufen… Mein Test: use Shopware\Components\Test\Plugin\TestCase; class Bootstrap\_Test extends TestCase{ ... public function setUp() { $this-\>plugin = Shopware()-\>Plugins()-\>Frontend()-\>MyPlugin(); } ... public function testCategoryDecoration(){ $categoryService = Shopware()-\>Container()-\>get('shopware\_storefront.category\_service'); $this-\>assertInstanceOf('ShopwarePlugins\MyPlugin\Services\CategoryService',$categoryService,"Should have been decorated"); } }
Alles andere geht einwandfrei…
Hallo, ich hatte das Problem auch. Bei mir lag es daran, dass ich onStartDispatch() nicht ausgeführt hatte. vgl. aus https://developers.shopware.com/blog/20 … t/#testing // If you are using subscribers, you might need to trigger the `onStartDispatch` on your own Shopware()-\>Plugins()-\>Frontend()-\>MyPlugin()-\>onStartDispatch();
Grüße, Sven
Hi, ja, so ist es: Die Plugin-Unittests machen ja nicht automatisch einen Shopware-Request - die stellen euch erstmal nur den Shopware-Stack zur Verfügung. Wenn ihr mit euren Subscribern auf dem “StartDispatch” hängt, müsst ihr das entweder ausführen oder eben einen Request “simulieren”. Die Klasse “\Enlight_Components_Test_Controller_TestCase” hat dafür eine Methode “dispatch” implementiert, die das erlaubt. Besten Gruß, Daniel