Traiter avec les problèmes de chemin PHPUnit
-
28-09-2020 - |
Question
Je reçois l'erreur suivante lorsque j'essaie d'exécuter PHPUnit de mon application MVC actuelle
Fatal error: Cannot redeclare class PHPUnit_Util_FilterIterator in /usr/local/pear/PHPUnit/Util/FilterIterator.php on line 162
J'ai réussi à tracer cette erreur à une combinaison de quelques choses.
$paths = array();
$paths[] = '../m';
$paths[] = '../v';
$paths[] = '../c';
$paths[] = '/usr/local/pear';
set_include_path(implode(PATH_SEPARATOR, $paths));
Quand je commente
set_include_path(implode(PATH_SEPARATOR, $paths));
PHPUNIT exécute des tests
Quand je commente
$paths[] = '/usr/local/pear';
Je reçois
Fatal error: require_once(): Failed opening required 'PHPUnit/Framework/TestCase.php'
Si je commencez tous les autres répertoires, économisez pour le
$paths[] = '/usr/local/pear';
Je reçois l'erreur "Impossible de redéclaré".
La seule façon que je puisse arriver à exécuter les tests réels est si je cours sans l'instruction SET_InClude_Path et incluez manuellement tous les fichiers de classe appelés par tout test individuel.
Des idées?
EDIT: Il semble qu'il y a un conflit avec la fonction __AutoLoad.Je ne sais toujours pas trop comment aborder la question.
La solution
Bien qu'il s'avère, je ne sais pas pourquoi cela fonctionne réellement ... mais comme ça fait, je posterai le résultat.
$paths[] = get_include_path();
$paths[] = '../m';
$paths[] = '../v';
$paths[] = '../c';
set_include_path(implode(PATH_SEPARATOR, $paths));
Alors voilà.Au moins au moins, vous y allez dans le cas où vous avez également eu ce problème aussi :)