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

EDI, CMS, Outils, Scripts et API PHP Discussion :

[Test] Question sur les test unitaires


Sujet :

EDI, CMS, Outils, Scripts et API PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 583
    Par défaut [Test] Question sur les test unitaires
    Bonjour à tous,

    Pourriez-vous m'aider s'il vous plaît?
    Dans mon app je dois faire des test unitaire.
    Je suis sous laravel.
    Pour tester les intéractions avec la base de données comment je dois procéder? Ou dois je utiliser les mocks?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     protected function setUp(): void
        {
            parent::setUp();
     
            $this->api = new Api();        
            $this->seller= new Vendor(['id_user' => 99, 'id_lang' => 'fr', 'id_currency' => 'EUR', 'id_site' => 1, 'name' => 'myVendor', 'ref' => '1234', 'description' => 'Lorem', 'file_logo' => '']);
            $this->sellerFluxProduct = new VendorFluxProduct([
                'id_flux' => 35,
                'ref' => 'GFTRG',
                'category' => 34
            ]);
            $this->sellerFlux = new VendorFlux(['id_vendor' => 45, 'name' => 'instantluxe', 'type' => 'csv', 'url' => 'http://timeluxe.com/instantluxe.csv', 'file' => '']);   
     
        }
    Dans mon setup j'initialise mes composants, puis je test addpreduct contient des interactions avec la base de données
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    /*
         * Test add preduct
         * @return void
         */
        public function testAddPreduct()
        {
            $this->api->addPreduct($this->sellerFluxProduct, $this->sellerFlux, $this->seller);
        }
    Merci

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    Pour PHPUnit tu vas trouver toute la doc sur les tests de bases de données par ici.
    Si tu veux juste fournir des résultats passant les assertions de manière certaine, tu peux effectivement te servir des mocks.
    Les mocks sont très utiles dans la mesure où tu as à ta disposition des jeux de données (par exemple) comme s'ils provenaient d'une extraction de la base de données sauf que c'est toi qui les créés. Ainsi cela t'évite de taper la base de données (qui devra quand même être testée par ailleurs) et tu peux avoir des données alambiquées à souhait pour t'assurer de la solidité de ton code.

  3. #3
    Membre Expert

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 583
    Par défaut
    Merci,

    Pour les tests avec base de données vaut-il mieux dans ma classe de test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $this->vendorFlux = new VendorFlux(['id_vendor' => 1, 'name' => 'instantluxe', 
                                                'type' => 'csv', 'url' => 'http://timeluxe.com/instantluxe.csv', 'file' => '']);
    Ou utiliser des seeders et factory? Sachant que la fonction que je dois tester à 3 modèles différent, mais puisque c'est un test api à partir de données csv il me faut des données statiques?
    Une dernière question pour les rollbacks c'est quoi la bonne pratique?

    Merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    Si tu es au niveau test unitaires, alors utilise les seeders Laravel puisque tu ne testes pas le modèle Eloquent mais une API. L'avantage des seeders, c'est que tu peux faire des données sur mesures, alors que les factory seront générique et donc les cas particuliers non gérés.

    Personnellement, pour les application Laravel, j'utilise plutôt Codeception qui supporte la syntaxe PHPUnit mais aussi fourni des fonctionnalités pour Laravel. J'ai mon projet Kleis qui utilise Codeception pour les tests (note que dans mon cas j'utilise les seeders).

    Pour la question des rollbacks, la bonne pratique c'est dans les tearDown() ou tearDownAfterClass(). Personnellement, j'opte pour le second sauf si les tests polluent réciproquement les données de tests.

    Aussi, en bonne pratique, je recommande de séquencer les tests de façon a avoir les tests destructif a la fin au cas quelque chose ne tourne pas rond (dans un premier temps, après on peu avoir un peu plus de fun avec une séquence de test aléatoire).

  5. #5
    Membre Expert

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 583
    Par défaut
    Super merci.

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

Discussions similaires

  1. Questions sur les tests
    Par Sylar44 dans le forum Outils
    Réponses: 0
    Dernier message: 21/03/2017, 16h31
  2. Question sur les tests fonctionnels
    Par obito dans le forum Visual Studio
    Réponses: 4
    Dernier message: 18/05/2011, 09h47
  3. question sur les variables globales et les thread posix
    Par souris_sonic dans le forum POSIX
    Réponses: 5
    Dernier message: 13/06/2003, 13h59
  4. Question sur les handles et les couleurs...
    Par MrDuChnok dans le forum C++Builder
    Réponses: 7
    Dernier message: 29/10/2002, 08h45
  5. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11

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