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

Langage PHP Discussion :

Problème génération de Mock avec simpleTest


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 99
    Points : 49
    Points
    49
    Par défaut Problème génération de Mock avec simpleTest
    Bonjour ,
    Je souhaite faire un test et simuler une fonction qui charge toutes mes données sur ma BD , j'arrive a crée mon Mock mais j'ai un soucis pour le format de la ressource en php . En faite lorsque ma fonction s'exécute je teste le nombre de colonnes et le problème est la c'est que ça me retourne une exception "mysql_num_rows() expects parameter 1 to be resource" et si je fais un exceptError(" "mysql_num_rows() expects parameter 1 to be resource") ma méthode ne fonctionne pas correctement , si vous avez une solution , merci d'avance pour votre aide
    Classe PERS_PersistanceBDTest()
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    <?php
    ini_set('display_errors', 1);
    error_reporting(E_ALL | E_STRICT);
    require_once('simpletest/autorun.php');
    require_once('simpletest/unit_tester.php');
    require_once('simpletest/mock_objects.php');
    require_once('simpletest/web_tester.php');
    require_once('simpletest/autorun.php');
    require_once 'PERS_PersistanceBDTest.php';
    require_once('PERS_PersistanceBDForTest.php');
     
     
     
     
     
     
    Mock::generate("PERS_Connexion");
     
     
     
     
    class PERS_PersistanceBDTest extends UnitTestCase  {
     
     
    var $mockConnexion;
    var $Persistance;
     
     
     
     
    	function testPERS_PersistanceBDchargerIsInstaceofMember(){
    		$this->mockConnexion=&new MockPers_Connexion($this);
     
    		$this->Persistance=new PERS_PersistanceBDForTest($this->mockConnexion);
    		$this->expectError("mysql_num_rows() expects parameter 1 to be resource, array given");
    		$tab=$this->Persistance->charger();
    				}
     
    	}
     
     
     
     
    }
    $test= new PERS_PersistanceBDTest();
     
    $test->run(new HtmlReporter());
     
    ?>
    Classe PERS_PersistanceBDForTest
    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
    <?php
    require_once('simpletest/autorun.php');
    require_once('simpletest/unit_tester.php');
    require_once('simpletest/mock_objects.php');
    require_once('simpletest/web_tester.php');
    require_once('simpletest/autorun.php');
    ini_set('display_errors', 1);
    error_reporting(E_ALL | E_STRICT);
    include_once('ExportFromBD.php');
    require_once('simpletest/mock_objects.php');
    require_once('DATA_MembreTest.test.php');
     
     
     
     
    class PERS_PersistanceBDForTest extends PERS_PersistanceBD  {
     
    	function __construct($mock){
    		$this->connexion = $mock;
    		$this->connexion->returns('query', $GLOBALS['membre'], array('SELECT DISTINCT membre.email AS email ,droit,membre.nom AS nom ,membre.nom_jeune_fille as nomjf,prenom,mdp,membre.rue ,membre.code_postal as code_postal,membre.ville as ville,promo.id as idPromo,promo.diplome,promo.annee,promo.filiere,membre.departement as departement,membre.pays as pays,diplome,annee,filiere,membre.entreprise AS nomEntreprise FROM membre,promo,entreprise WHERE membre.promo=promo.id  ORDER BY email'));
    		$this->connexion->returns('query',$GLOBALS['donneeAnthony'],array("Select DISTINCT * from donnee WHERE email='palmieri.anthony@hotmail.fr'"));
    		$this->connexion->returns('query',$GLOBALS['donneeLudovic'],array("Select DISTINCT * from donnee WHERE email='mouline.ludovic@etu.unice.fr'"));
    		$this->connexion->returns('query',$GLOBALS['entreprise'],array("SELECT DISTINCT * FROM entreprise WHERE nom='apple'"));
    		$this->connexion->query("Select DISTINCT * from donnee WHERE email='mouline.ludovic@etu.unice.fr'");
    	}
    	public function retournMock(){
    		return $this->connexion;
     
    	}
     
     }
    Methode Charger()
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    public function charger()
    	{
     
    		if ($this->connexion)
    		{
    			$membre= array();
    			$queryMembre="SELECT DISTINCT membre.email AS email ,droit,membre.nom AS nom ,membre.nom_jeune_fille as nomjf,prenom,mdp,membre.rue ,membre.code_postal as code_postal,membre.ville as ville,promo.id as idPromo,promo.diplome,promo.annee,promo.filiere,membre.departement as departement,membre.pays as pays,diplome,annee,filiere,membre.entreprise AS nomEntreprise FROM membre,promo,entreprise WHERE membre.promo=promo.id  ORDER BY email";
    			$result=$this->connexion->query($queryMembre);
    			print_r($result);
    			if (mysql_num_rows($result) == 0) {
    				return false;
    			}
    			while($ligne=mysql_fetch_array($result,MYSQL_ASSOC))
    			{
    				$query="Select DISTINCT * from donnee WHERE email='".$ligne["email"]."'";
    				$queryDonnee=$this->connexion->query($query);
    				if (mysql_num_rows($queryDonnee) == 0) {
     
    				}else{
    					while($donnee=mysql_fetch_array($queryDonnee,MYSQL_ASSOC)){
     
     
    						$ligne[$donnee["type"]]=$donnee["contenu"];
    					}
    				}
     
    				$queryEntreprise="SELECT DISTINCT * FROM entreprise WHERE nom='".$ligne["nomEntreprise"]."'";
    				$queryEntreprise=$this->connexion->query($queryEntreprise);
    				while($donneeEntreprise=mysql_fetch_array($queryEntreprise,MYSQL_ASSOC)){
    					if (mysql_num_rows($result) == 0) {
    						$ligne["entreprise"]=null;
    					}else{
    						$adresseEntreprise= new DATA_Adresse($donneeEntreprise["ville"], $donneeEntreprise["departement"], $donneeEntreprise["rue"], $donneeEntreprise["pays"], $donneeEntreprise["code_postal"]);
    						$ligne["entreprise"]= new DATA_Entreprise($donneeEntreprise["nom"], $donneeEntreprise["email"], $adresseEntreprise);
     
    					}
    				}
     
    				$adresseMembre= new DATA_Adresse($ligne["ville"], $ligne["departement"], $ligne["rue"], $ligne["pays"], $ligne["code_postal"]);
    				$ligne['adresse']=$adresseMembre;
    				$promo= new DATA_Promo($ligne["annee"], $ligne["filiere"], $ligne["diplome"], $ligne["idPromo"]);
    				$ligne["promo"]=$promo;
    				$member=new DATA_Membre($ligne);
    				$membre[$ligne["email"]]=$member;
    			}
    		}
     
    		return $membre;
    	}
    Merci d'avance

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Citation Envoyé par tonytrua Voir le message
    si je fais un exceptError(" "mysql_num_rows() expects parameter 1 to be resource") ma méthode ne fonctionne pas correctement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->expectError("mysql_num_rows() expects parameter 1 to be resource, array given");
    expect ou except ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 99
    Points : 49
    Points
    49
    Par défaut
    Oui c'est bien exceptError mais le problème de cette méthode est qu'elle attrape l'eereur sans que mon programme puisse continuer donc cette solution ne va pas : / , et est il vraiment utile de faire un mock pour tester cette fonction?
    Merci pour vos réponses

Discussions similaires

  1. Réponses: 20
    Dernier message: 14/06/2008, 14h18
  2. [RMI] Problème de génération de skeletton avec rmic
    Par destructive dans le forum Java EE
    Réponses: 1
    Dernier message: 18/01/2008, 11h37
  3. Problème de génération de pdf avec Birt
    Par nabolo dans le forum BIRT
    Réponses: 2
    Dernier message: 15/11/2007, 09h36
  4. [Forms]Problème de génération de fmx avec forms
    Par estalol1 dans le forum Forms
    Réponses: 4
    Dernier message: 11/01/2007, 12h08
  5. Problème génération javadoc avec Eclipse
    Par pontus21 dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 05/01/2007, 00h24

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