Wie testet ihr eure PHP scripte?
Ich habe vor ~10 Jahren jede Menge PHP Skripte geschrieben ohne auch nur an testing zu denken. Wenn ich diese heute lese stehen mir die Haare zu berge. Wenn ich diese nun anfasse möchte ich nicht den gleichen Fehler wieder machen. Daher frage ich mich was die best practices für testing von IPS scripten sind.
Ich kann mir momentan folgendes Vorstellen
Tests ausführen
[ul]
[li]Einzeln/Manuell: Ähnlich wie bei Python’s name == ‚self‘ könnte ich $_IPS[‚SENDER‘] auswerten und falls das script über den editor (nicht über ein event) ausgelöst wurde , meinen test code ausführen (Systemvariablen — IP-Symcon :: Automatisierungssoftware)
[/li][li]Automatisch/Extern: Meine scripts irgendwie mit PhpUnit integrieren (Getting Started with Version 7 of PHPUnit – The PHP Testing Framework)
[/li][/ul]
Mocking: Irgendwie muss ich es schaffen die IPS funktionen (GetValue, SetValue, …) dazu zu bringen zurückzugeben was ich möchte.
[ul]
[li] Wrapping: Ähnlich wie beim testen von singletons könnte ich alle zugriffe auf die IPS funktionen in eine eigne Klasse wrappen. Alle meine Skripte müssten dann diese Klasse benutzen um auf IPS funktionen zuzugreifen. Wärend des tests könnte ich die Klasse dann gegen eine andere Klasse austauschen, die das gleiche Interface bietet. Ich will aber nicht unbedingt alle meine Klassen umstellen
[/li][li] Replacement: Lange kein PHP gemacht. Kann ich eine global definierte Funktion einfach überschreiben?
[/li][li] External definition: Wenn ich meine Skripte im Kontext von PHP unit ausführe dürften die IPS funktionen so oder so nicht existieren. Damit müsste ich sie einfach definieren können und hätte somit volle kontrolle darüber was sie zurück geben.
[/li][/ul]
Soweit meine Gedanken zu dem Thema. Nun würde mich interessieren wie ihr das so macht