Giter VIP home page Giter VIP logo

h24-lab-testcontainers's Introduction

Laboratoire - Test Containers

Tests d'intrégration pour couche de persistence.

Documentation:

Étapes

  1. Commencez à partir du dernier laboratoire, avec une interface qui uniformise les fonctionalités d'accès aux données.
  2. Créez une classe de tests abstraite afin de tester chaque implémentation de l'interface. Le but est d'avoir des tests centrés sur le comportement au lieu d'être centrés sur l'implémentation.
  3. Implémentez cette classe de test pour votre persistence in-memory. Fournissez les méthodes manquantes et assurez-vous que tous les tests passent.
  4. Implémentez cette classe de test pour votre persistence mongo. Cette ordre vous introduira au TDD (test-driven development), puisque vos tests sont déjà écrit mais pas l'implémentation.
    1. Utilisez la librairie test-containers afin de démarrer des instances Mongo aléatoires et conteneurisées. Utilisez les valeurs du container généré afin de créer votre Datastore Morphia.
    2. 1 à 1, faites passer vos tests pour l'implémentation Mongo.
  5. Répétez l'exercice de 0 afin de devenir de plus en plus à l'aise avec cette méthode!

Pour résumer toutes les étapes qu'on devrait faire lors de l'ajout d'une nouvelle implémentation (les noms sont seulement des suggestions, appliquée à la persistence mais valide pour tout type d'abstraction) :

  1. Avoir une classe spécialisée pour la persistence qui est testée. Vous avez donc au moins une classe dans le style CustomerPersistence et un test CustomerPeristenceITest d'associé.
  2. Extraire une interface pour l'implémentation unique actuelle. S'assurer que cette interface appartient à la couche logique et interagie seulement avec des objets de cette couche. Vous aurez donc maintenant la nouvelle interface CustomerPersistence et l'ancienne classe qui l'implémente, probablement renommée CustomerPersistenceInMemory et déplacé dans une nouvelle couche d'infrastructure/persistence/donnée.
  3. Transformer les tests de l'implémentation en tests abstraits et génériques basés sur le comportement. Vous aurez donc maintenant la classe abstraite CustomerPeristenceITest qui définie les tests, et la classe CustomerPeristenceInMemoryITest qui l'extend (ne contient aucun tests, seulement les implémentation des méthodes abstraites).
  4. Ajoutez une nouvelle implémentation vide de votre persistence, et ajoutez-y une classe de test correspondante qui implémente également la classe de tests abstraite. Vous aurez donc maintenant CustomerPersistenceMongo et CustomerPersistenceMongoITest.
  5. Implémentez 1 à 1 les fonctionalités de CustomerPersistenceMongo afin de faire passer les tests!

h24-lab-testcontainers's People

Contributors

vigenere23 avatar

Watchers

William Guimont-Martin avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.