Jump to content
xt:Commerce Community Forum

Testdriven Entwicklung


nusphere

Recommended Posts

Hi,

ich würde gerne bei unseren XT:Commerce Projekten auf eine testgetriebene Entwicklung (test driven development) umsteigen. Hierzu plane ich PHPUnit zu verwenden (ggf. auch atoum).

Auch wenn es schön wäre eine komplette Testsuite von hier zu bekommen, gehe ich davon aus, dass man an diese nicht herran kommt. Als habe ich mich erst einmal auf meine Plugins gestürzt. Hierbei habe ich zur zeit Probleme meine bootstrap Datei korrekt zum laufen zu bekommen.

Wenn ich PHPUnit auf eine Plugin Klasse schreibe, so muss ich ja die xtCore/main.php einbinden um alle Variablen / Konstanten und Klassen zu erhalten. Aber genau hier liegt der Hund begraben. Dies bricht leider bei der 1. ioncube Datei ab und scheint auf der php-cli auf irgend eine Art und Weise ab einer bestimmten include - tiefe die globalen Variablen zu verlieren.

Hat schon jemand versucht unit tests für seine eigenen Plugins auf die beine zu stellen ggf sogar schon geschafft?

Bin über Anregungen sehr erfreut.

Nachdem ich einen Unittest ausgeführt habe, kommt bei mir leider folgende Fehlermeldung:


Fatal error: Call to a member function Execute() on a non-object in /Users/sebastianhopfe/Sites/w2p.igmetall.de/htdocs/xtFramework/classes/class.hookpoint.php on line 0
[/php]

Ich gehe mal davon aus, dass es sich hierbei um die Methode $db->Execute() handelt. Des weiteren gehe ich davon aus, dass $db wie üblich über global reingeladen wird und dort nicht zur Verfügung steht.

Ich meine mich auch zu erinnern, dass PHP ab einen bestimmten include-Level seinen kompletten Variablenscope verliert.

Wie gesagt, das ist meine Vermutung. ... Weiß jemand Rat?

PS: Es handelt sich um xt:commerce 4.1.0 mit einem unveränderten Basecode. Und der PHP Unittest wird Lokal mit einer funktionieren ioncube Lizenz ausgeführt (ioncube_license_matches_server() hat ein true zurückgegeben) und auf der Komandozeile ausgeführt. (PHP-CLI)

Gruß

Das Nu

Link to comment
Share on other sites

Nachtrag:

Leider komme ich nur langsam vorran und so habe ich heute erst eine Lösung für mein "Problem" gefunden.

http://www.php.net/manual/de/language.variables.scope.php#100884

Das führt dazu, dass alle Globalen Variablen direkt bei $GLOBALS entsprechend zugewiesen werden - nachdem nun die $GLOBALS gefüllt werden - klappt es mit den unittests.

Noch nicht flüssig - aber zumindestens kommt die xtCore/main.php durch.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...