web-dev-qa-db-fra.com

Impression de la sortie de débogage sur la console dans Codeception

Question très épaisse, mais existe-t-il un moyen d'imprimer vos propres messages de débogage sur la console dans Codeception? Je parle de messages qui n'ont rien à voir avec des assertions, uniquement pour déboguer les tests eux-mêmes (par exemple, comme vous le feriez avec var_dump() une variable d'un site Web PHP normal) 

J'ai déjà essayé var_dump(), echo et print mais en vain. L'utilisation de WebDebugmakeAResponseDump() ne produit pas non plus les résultats requis. Je veux simplement pouvoir voir le contenu de ma variable sans avoir à exécuter un débogueur comme xdebug

37
Ayame__

Je semble avoir trouvé un moyen de contourner le problème en utilisant une classe d'assistance:

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

et en appelant la classe en tant que telle: 

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

alors je reçois la sortie de débogage que je recherche 

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

J'accepterai cela comme une solution temporaire, mais j'aimerais garder mes assertions nettes et ne pas les encombrer de var_dumps mis à niveau pour tester des fonctions. Si quelqu'un a une solution conceptuellement correcte, veuillez l'envoyer.

10
Ayame__

Voir Débogage qui dit

Vous pouvez imprimer toutes les informations contenues dans un test à l'aide de la fonction codecept_debug.

Et je l’utilise dans ma classe * Cept:

codecept_debug($myVar);

Votre sortie de débogage n'est visible que lorsque vous exécutez avec --debug (-v ne l'affiche pas, mais -vv et -vvv font):

codecept run --debug

Et la sortie ressemblait à:

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();

et lancez Codeception avec --debug.

45
sennett

Ou vous pouvez utiliser les commandes de contrôle de verbosité comme:

codecept run -vvv

où chaque v augmente la verbosité de la sortie (très silencieux par défaut).

6
Luca Tumedei

Par défaut, Codeception dit qu'il y a une erreur mais ne la montre pas en détail. Cependant, selon cet article de blog added --debug montre les erreurs en détail.

codecept run --debug

2
bibstha

La version courte serait codecept run tests/acceptance/SomeCest.php -d
- d vous montrera les étapes et le débogage

0
Stipe