IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

PHPUnit : PHP Notice: Undefined index: SERVER_NAME


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2016
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2016
    Messages : 109
    Par défaut PHPUnit : PHP Notice: Undefined index: SERVER_NAME
    Bonjour,

    Le contexte est l'utilisation de PHPUnit (9.1.4).

    Mes tests PHPUnit sur des class simples fonctionnent très bien.

    Mais quand je place à d'autres class, j'ai ce message : PHP Notice: Undefined index: SERVER_NAME
    A priori cela vient de la ligne $this->Serveur_Nom = $_SERVER['SERVER_NAME'];

    J'ai fait le test avec une class simplissime avec $this->Serveur_Nom = $_SERVER['SERVER_NAME']; dans le construct, et pareil,
    PHP Notice: Undefined index: SERVER_NAME

    Existe-t-il un moyen de gérer cette erreur ?

    Les codes :
    test2.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?php
    require 'Math.php';
     
    use PHPUnit\Framework\TestCase as TestCase;
    // sometimes it can be
    // use PHPUnit\Framework\TestCase as TestCase;
     
    class Test2 extends TestCase{
        public function testFibonacci() {
            $math = new Math();
            $this->assertEquals(34, $math->fibonacci(9));
        }
     
        public function testFactorial() {
            $math = new Math();
            $this->assertEquals(120, $math->factorial(5));
        }
     
        public function testFactorialGreaterThanFibonacci() {
            $math = new Math();
            $this->assertTrue($math->factorial(6) > $math->fibonacci(6));
        }
    }
    math.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    <?php    
    class Math {
    	function __construct()
    	{
    		$this->Serveur_Nom = $_SERVER['SERVER_NAME'];
    	}
        public function fibonacci($n) {
            if (is_int($n) && $n > 0) {
                $elements = array();
                $elements[1] = 1;
                $elements[2] = 1;
                for ($i = 3; $i <= $n; $i++) {
                    $elements[$i] = bcadd($elements[$i-1], $elements[$i-2]);
                }
                return $elements[$n];
            } else {
                throw new 
                    InvalidArgumentException('You should pass integer greater than 0');
            }
        }
     
        public function factorial($n) {
            if (is_int($n) && $n >= 0) {
                $factorial = 1;
                for ($i = 2; $i <= $n; $i++) {
                    $factorial *= $i;
                }
                return $factorial;
            } else {
                throw new 
                    InvalidArgumentException('You should pass non-negative integer');
            }
        }
    }
    ?>

  2. #2
    Membre chevronné Avatar de Freudd
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 165
    Par défaut
    Bonjour berthos,

    Désolé mais tu ne pourras pas recevoir de données dans la variable $_SERVER sur des tests PHPUnit.

    Alors ça ne veut pas dire que tu ne peux pas faire de tests non plus, il y a des solutions pour résoudre ça ^^
    Dans ton cas il faut que tu te renseignes sur le Mock pour valoriser la variable dans ta classe avant son test.
    https://phpunit.de/manual/6.5/en/test-doubles.html

    Je te recommande également de ne pas utiliser une variable $_SERVER directement dans la construction de ta classe car comme tu peux le constater elle n'est pas disponible dans tous les cas.
    Pense à faire un test en fournissant une valeur par défaut par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class Math
    {
     
        function __construct($server_nom = '')
        {
            $this->Serveur_Nom = isset($_SERVER[ 'SERVER_NAME' ])
                ? $_SERVER[ 'SERVER_NAME' ]
                : $server_nom;
        }
    }

  3. #3
    Membre confirmé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2016
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2016
    Messages : 109
    Par défaut
    Merci beaucoup
    Finalement j'ai décidé de mettre le nom du serveur en variable du fichier de configuration car le code n'a pas à changer de serveur sauf changement manuel.
    Du coup plus d'erreur.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 7] Erreur Php PHP Notice: Undefined index: SERVER_NAME
    Par Minzord dans le forum Langage
    Réponses: 4
    Dernier message: 11/12/2019, 21h35
  2. [MySQL] PHP - Notice : Undefined index
    Par Mathis_EDON dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 01/02/2019, 09h03
  3. aide pour facture sous php : Notice: Undefined index
    Par le beauceron dans le forum Langage
    Réponses: 3
    Dernier message: 19/08/2012, 23h15
  4. php Notice: Undefined index:
    Par DaYonyon dans le forum Langage
    Réponses: 5
    Dernier message: 20/01/2010, 12h17
  5. Réponses: 8
    Dernier message: 03/04/2007, 10h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo