2011 habe ich eine Technik vorgestellt, Funktionen in PHP Unit Tests zu mocken, die sich die Regeln für Namensauflösung von PHP namespaces zunutze macht. Er kann hier gelesen werden:
- Mocking Built-in Functions like time() in Unit Tests (bisher nur auf Englisch)
Es macht mich stolz, dass der große Matthew Weier O’Phinney 1 nun die selbe Technik beschreibt, um Code zu testen, der Ausgaben erzeugt, insbesondere Code, der HTTP Header mit der Core-Funktion header()
sendet. Lies mehr dazu in seinem Artikel:
- Testing Code That Emits Output (ebenfalls Englisch)
Meiner Meinung nach ist das ein großartiges Beispiel dafür, wie nützlich diese Methode ist. “Headers already sent” Fehler in Unit Tests können einen in den Wahnsinn treiben. Unglücklicherweise gibt es immer noch viele Anwendungen, die keine Namespaces nutzen (*hust* Magento *hust*), dort funktioniert die Methode nicht.
Notes:
- für die, die ihn nicht kennen: Er ist Zend Framework Project Lead und Du solltest seinem Blog auf http://mwop.net/blog.html folgen! ↩