Ich versuche gerade endlich mal Unittests für eines meiner Plugins (altes Pluginsystem) zu schreiben, scheitere momentan aber daran die Config des Plugins zu beeinflußen um auch alle Codezweige abzudecken.
Die Tests an sich laufen so weit, die initiale config aus $ensureLoadedPlugins wird ohne Probleme eingelesen. Aber spätere Änderungen haben keinerlei Wirkung und in der getesten Methode kommt weiterhin der initiale Wert an. Die getestete bzw. zu testende Methode liegt in einer Klasse die per __construct() die Bootstrap bekommt und sich über diese die Config() holt um einen Wert zu lesen, die Bootstrap wiederum wird über Shopware()->Plugins()->Frontend()->pluginName() instanziert.
Ich vermute mal das meine Herangehensweise einfach falsch ist, aber wie geht es denn richtig?
Komme ich leider erst morgen abend dazu, habe mir heute vorgenommen nach zwei Tagen Frust mich heute statt phpstorm mal STEAM zu widmen
Aber auf das Angebot komme ich morgen gerne zurück! Wenn dir eine “nicht minimalisierte” Version auch reicht, schicke ich dir per PM aber auch gerne einen Link.
Dann kann ich es natürlich leicht testen. Für das alte Plugin System: Du könntest Deinen Klassen Getter Methoden hinzufügen, die den Config Wert auslesen. In Deinem Test müsstest Du dann die Getter Methoden weg mocken. Nicht sehr schön, aber das trifft ja auf das alte Plugin System grundsätzlich zu.
Aber auf das Angebot komme ich morgen gerne zurück! Wenn dir eine „nicht minimalisierte“ Version auch reicht, schicke ich dir per PM aber auch gerne einen Link.
Kannst Du gerne machen. Werde aber erst Montag Abend dazu kommen mir das anzu schauen.
Allerdings ist es natürlich eh fragwürdig einfach die ganze Bootstrap zu injecten. Korrekter wäre wohl die eigentlich benötigten Sachen zu injecten, und so werde ich es wohl auch refactoren.
Dennoch würde mich interessieren warum das hier nicht geht, denn eigentlich hätte ich erwartet das es geht… ¯_(ツ)_/¯
Nachtrag: Habe es jetzt so abgeändert das die Config als Array injected wird. Zusätzlich die eine Methode die genutzt wurde dorthin verschoben wo sie auch wirklich genutzt wird. Jetzt funktioniert das auch mit den Tests. Falls jemand weiß warum es nicht wie im Demo-Plugin funktioniert wäre ich aber definitiv neugierig.