it-swarm.com.de

Debug-Ausgabe in Codeception auf die Konsole drucken

Sehr schwierige Frage, aber gibt es eine Möglichkeit, Ihre eigenen Debug-Meldungen in Codeception an die Konsole zu drucken? Ich meine Nachrichten, die nichts mit Assertionen zu tun haben, nur um die Tests selbst zu debuggen (z. B. als würden Sie var_dump() eine Variable in einer normalen PHP - Website) verwenden. 

Ich habe bereits var_dump(), echo und print versucht, jedoch ohne Erfolg. Die Verwendung von WebDebugs makeAResponseDump() führt auch nicht zu den erforderlichen Ergebnissen. Ich möchte nur den Inhalt meiner Variablen sehen können, ohne einen Debugger wie xdebug ausführen zu müssen. 

37
Ayame__

Ich habe anscheinend einen Ausweg gefunden, indem ich eine Hilfsklasse benutze:

class WebHelper extends \Codeception\Module
{
    public function seeMyVar($var){
        $this->debug($var);
    }
}

und die Klasse als solche aufrufen: 

$foo = array('one','two');
$I->seeMyVar($foo);

dann bekomme ich die debug-Ausgabe, nach der ich suche 

I see my var "lambda function"
  Array
  (
      [0] => one
      [1] => two
  )

Ich akzeptiere dies als temporäre Lösung. Ich möchte jedoch meine Behauptungen sauber halten und sie nicht mit var_dumps aktualisieren, das für Testfunktionen aufgerüstet ist. Wenn also jemand eine konzeptionell korrekte Lösung hat, übermitteln Sie sie bitte

10
Ayame__

Siehe Debugging das sagt

Sie können alle Informationen innerhalb eines Tests mithilfe der Funktion codecept_debug ausdrucken.

Und ich verwende es in meiner Klasse * Cept:

codecept_debug($myVar);

Ihre Debug-Ausgabe ist nur sichtbar, wenn Sie --debug ausführen (-v zeigt es nicht an, aber -vv und -vvv tun dies):

codecept run --debug

Und die Ausgabe sah wie folgt aus:

Validate MyEntity table insert (MyCept) 
Scenario:
* I persist entity "AppBundle\Entity\MyEntity"

  AppBundle\Entity\MyEntity Object
  (
      [Id:AppBundle\Entity\MyEntity:private] => 1
      [Description:AppBundle\Entity\MyEntity:private] => Description
  )

 PASSED 
47
Bae
\Codeception\Util\Debug::debug($this->em);die();

und führen Sie Codeception mit --debug-Flag aus.

45
sennett

Oder Sie können die Ausführlichkeitssteuerungsbefehle wie verwenden:

codecept run -vvv

dabei erhöht v die Ausführlichkeit der Ausgabe (standardmäßig sehr leise).

6
Luca Tumedei

Standardmäßig gibt Codeception an, dass ein Fehler aufgetreten ist, der Fehler wird jedoch nicht im Detail angezeigt. Nach diesem Blogbeitrag Hinzufügen von --debug werden jedoch die Fehler detailliert dargestellt.

codecept run --debug

2
bibstha

Kurze Version wäre codecept run tests/acceptance/SomeCest.php -d
- d zeigt Ihnen Schritte und Debugging

0
Stipe