En PHPUnit, il y a des moments où une assertion échoue, et lors de la déclaration de l'assertion, PHPUnit appelle automatiquement var_export() sur la variable. Disons que vous avez appelé ce morceau de code:Comment remplacer var_export dans PHPUnit?
$foo = new StdClass();
$foo->bar = 123;
$foo->baz = "Hi there";
$this->assertTrue($foo);
La sortie de c'est:
Failed asserting that
stdClass Object
(
[bar] => 123
[baz] => Hi there
)
is true.
Si la variable est un objet d'exception, cela peut provoquer le test unitaire pour imprimer méga-octets de texte lorsque marcher dans l'arbre des objets, y compris les traces de la pile et d'autres informations. Parfois, PHPUnit meurt parce qu'il manque de mémoire pour essayer de tout sortir.
Je sais qu'une solution consiste à ajouter un test supplémentaire, en vérifiant si la variable est un objet avant de faire le assertTrue, ou un assertEquals. Mais mon équipe a actuellement beaucoup de tests unitaires.
Je me demandais donc s'il y avait un moyen de contourner le comportement par défaut de PHPUnit d'appeler var_export sur une variable lors de la génération du rapport d'erreurs.
Merci d'avance.
Vous pouvez toujours faire '$ this-> assertTrue ($ foo === true)' ... – ircmaxell
Je ne me souviens pas que les traces de la pile par défaut de PHP soient quelque chose comme des mégaoctets. Utilisez-vous Xdebug ou quelque chose? –
@Jani je suppose qu'il ne parle pas de la trace de la piste, mais la variable immergée (par exemple l'objet). Et si vous avez un objet avec une variable membre qui contient un livre (ou w/e) alors c'est beaucoup de sortie – edorian