Beim Updaten auf CakePHP 2.0.5 und PHPUnit 3.6.7 ist mir beim Schreiben von Tests aufgefallen dass ich keine debug-Meldungen mehr angezeigt bekomme. Außer debug() funktioniert auch kein print_r() oder echo() mehr. Nach einiger Suche bin ich schließlich auf diesen Blogeintrag gestoßen: Unit-Testing Tips for 2.0 and PHPUnit
Kurz zusammengefaßt lässt sich sagen, dass PHPUnit ab 3.6 alle Ausgaben schluckt, für die CLI Veriante schlagen die CakePHP-Entwickler vor –debug zu verwenden. Da ich aber meine Tests lieber im Browser anschaue war das natürlich auch keine Option.
Die Lösung für mein Problem war dann schließlich eine eigene debug-Methode zu schreiben:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public function debug($data, $pre = true) {
$data = print_r($data, true);
if ($pre)
$data = "<pre>" . $data . "</pre>";
echo $data;
if (empty($_SERVER['HTTP_HOST'])) // for cli mode use: --debug
return;
ob_flush();
} |
Rufe ich nun im TestCase diese Methode mit $this->debug() statt debug() auf erhalte ich (fast) wie gewohnt meine Debug-Ausgaben.
UPDATE:
Alternativ kann man auch &debug=1 an die URL anhängen um die Ausgaben von debug(), print_r() und Co zu erhalten.
