Tools für Unit-Tests in Magento

23

Was verwenden Sie für Unit-Tests in Magento? Oder was wissen Sie über Unit Testing und Magento? Unabhängig davon, ob Sie TDD durchführen oder nur Unit-Tests für Ihre Projektkomponenten durchführen möchten, benötigen Sie hierfür einige Tools.

Der erste grundlegende Ansatz ist die Verwendung von Phpunit, aber es gibt Dinge, die zusätzliche Gimmicks benötigen, um Magento "testbar" zu machen.

Alles, womit ich gearbeitet habe, hat mit phpunit zu tun:

Gibt es noch andere Möglichkeiten?

FlorinelChis
quelle

Antworten:

14

Testen Sie PHPSpec mit MageSpec, wenn Sie etwas möchten, das nicht auf PHPUnit, sondern auf Magento-Integration basiert. Es ist verwendbar, aber nicht nur für die Hauptsendezeit bereit. Zum Verspotten verwendet PHPSpec 2 Prophecy (was großartig ist), mag aber keine magischen Getter und Setter. Aus diesem Grund ist es besser, stattdessen Mockery zu verwenden, was gut funktioniert (und ich mag es auch sehr).

Dann gibt es noch Behat mit BehatMage für BDD mit Magento. Ein Blick lohnt sich, aber es schlägt beispielsweise fehl, wenn Sie verschiedene Geschäftsansichten auf verschiedenen Domänen testen möchten.

Es gibt auch eine Erweiterung zu BehatMage namens MageBehat (schreckliche Benennung!), Die aus einem Hackathon hervorgegangen ist. BehatMage bietet eine Menge Magento-spezifischer Aktionen, aber um ehrlich zu sein, sind einige der verwendeten Problemumgehungen eher ein Hack als echte Lösungen für die zugrunde liegenden Probleme. Trotzdem ist es verwendbar.

Ich hoffe, dass beide Projekte - MageSpec und BehatMage - in Zukunft florieren werden.

Vinai
quelle
Vielen Dank, dass Sie Vinai für Ihre Antwort. Ich kenne BehatMage und die Arbeit, die das Team von Inviqa / Session Digital geleistet hat (mir ist die Unternehmensstruktur unklar) ... Ich habe nur nach Phpunit gesucht, Behat / BehatMage, es ist nicht so ansprechend für mich, ich habe damit gespielt MageSpec vor einer Weile.
FlorinelChis
Englisch ist nicht meine Muttersprache, die von mir angegebenen Details hätten klarer sein können. Ich recherchiere für die London Magento User Group - December Meetup.
FlorinelChis
4

PHPUnit wird von Magento 2 verwendet. Hier ist eine Beispieldatei auf GitHub. https://github.com/magento/magento2/blob/master/dev/tests/unit/testsuite/Magento/Captcha/Helper/DataTest.php . (Ich habe diese Datei zufällig ausgewählt.) Vielleicht möchten Sie einen kurzen Blick auf den Magento 2-Testansatz werfen, damit alles, was Sie jetzt tun, mit Magento 2 kompatibel ist, wenn es veröffentlicht wird.

Alan Kent
quelle
Ich glaube nicht, dass das OP hier von Magneto 2 spricht.
Marius
3

Sie sollten mit EcomDev PHPUnit gehen .

Ich persönlich bin der Meinung, dass alle Magento-Entwickler nach einer einheitlichen Unit-Testing-Lösung streben sollten. EcomDev bietet das am häufigsten verwendete und ausgereifteste dieser Frameworks, sodass Sie bereits über einen anständigen Pool an Entwicklern mit entsprechender Erfahrung verfügen. Die Verwendung eines einzelnen Frameworks reduziert auch die Notwendigkeit, eine Milliarde verschiedener Frameworks zu installieren.

EcomDev PHPUnit hat jedoch die seltsame Konvention, Tests direkt neben dem Produktionscode zu platzieren. Glücklicherweise kann dies durch Ändern einiger Codezeilen einfach behoben werden. EcomDev nimmt sich auch die Zeit für Updates (obwohl ihr Github-Repo Anzeichen von Aktivität zeigt, sind sie also eindeutig noch am Leben).

Thai Phan
quelle
Gibt es also irgendwo ein Repo mit einer Reihe definierter Komponententests (unter Verwendung von ecomdev_unittest), die die Kernfunktionalität testen? (Ich weiß, dass MTAF dies tut, aber gibt es irgendwo vordefinierte Unit-Tests?)
ProxiBlue
1
@ProxiBlue Nein, es gibt keine, die mir bekannt sind. Das ist jedoch eine ziemlich gute Idee für ein Gemeinschaftsprojekt.
Thai Phan
2

Für Unit-Tests ist EcomDev PHPUnit das Beste.

Vielleicht möchten Sie es mit Funktionstests in Magento versuchen? Beispiel mit casperjs: https://github.com/jacquesbh/hackathon-casperjs/

Jacques Bodin-Hullin
quelle
1
da war eine andere Frage.
FlorinelChis