Je suis nouveau dans l’utilisation des test phpUnit avec Dolibarr.
Je cherche, dans un test, à appeler ma variable $db qui me permettrai de faire plus que des simples 1+1 = 2.
Seulement je ne parvient pas à appeler cette variable qui contient tout le nécessaire pour se connecter à la base de donnée.
Quel est l’include à faire pour avoir accès cette variable correctement hydratée?
Sauriez-vous m’aider?
(P.S : Je ne passe pas par Selenium, on parle bien de simples tests unitaires.
Pour faire plus simple, voici exactement le contenu de mon fichier de test :
use PHPUnit\Framework\TestCase;
global $db, $conf, $langs;
class EleveTest extends TestCase
{
public function testFetchData()
{
require_once '../../../../main.inc.php';
require_once '../../class/eleve.class.php';
$eleveClass = new Eleve($db);
$resultat = $eleveClass->fetch(2);
$this->assertEquals('résultat attendu', $resultat);
}
}
C’est un simple test de fetch sur une entité Élève.
Ce code ne génère absolument rien, aucune assertion ni aucun message d’erreur :
PHPUnit 10.5.3 by Sebastian Bergmann and contributors.
Runtime: PHP 8.1.11
Process finished with exit code 0
Un var_dump placé après le require du main.inc.php n’apparait pas en sortie, ce qui me fait penser qu’il y a une erreur dans mon fichier. Pareil si j’enlève les variables globales en haut.
Est-ce une erreur de placement des appels de fichier? de variables?
(Pour info, je suis avec Dolibarr v17.0.2, PHP 8.1, en local installation fraiche avec XAMPP)
Après avoir collé votre code, j’ai des erreurs concernant les fichiers mysqli.class.php, et functions.lib.php.
Attempt to read property « db » on null
Attempt to read property « dolibarr_main_db_collation » on null
Attempt to read property « dolibarr_main_db_collation »
Attempt to read property « file » on null
Attempt to read property « dol_document_root » on null
À chaque fois, la ligne qui génère une erreur dans les fichiers appelés inclues
$conf->qq_chose
La variable $conf semble être totalement vide.
En mettant tout en haut la variable global $db et $conf, (au dessus de la recherche de main.inc.php) :
use PHPUnit\Framework\TestCase;
global $db, $conf;
les erreurs citées ci-dessus disparaissent mais comme avant, mon test ne me ressort rien.
J’ai exactement suivi vos instructions et toujours aucun résultat.
Si j’enlève la recherche du main, une erreur apparait me disant que la constante « DOL_DOCUMENT_ROOT » n’existe pas, car elle est définie dans main justement.
J’ai même essayé depuis une installation complètement neuve en V18.0.4, et même constat, des erreurs à la variables $conf qui semble être vide.
Je continue de creuser, mais ça m’embête un peu de ne pas pouvoir faire de tests unitaires!