Il est étonnant de voir l’étendue des fonctionnalités de base de données en mémoire créables avec une seule instance de List
Repository en mémoire
variable integer. Si vous concevez votre implémentation de substitution afin d’employer des génériques, vous pouvez créer quasiment instantanément un Repository de substitution capable d’émuler la fonctionnalité de base de données pour n’importe lequel de vos objets métier.
Dans l’exemple de code ci-dessus, vous pouvez constater que tout tourne autour de la propriété Items. Celle-ci contient tous les éléments dans la « base de données » et est la cible de toutes les requêtes LINQ. La méthode Save() prend une instance d’un objet métier et regarde si la propriété Id a la valeur 0 ou non. Si la valeur est 0, le
Repository de substitution simule une instruction INSERT en incrémentant la variable m_currentIdValue et en définissant la valeur sur la propriété Id de l’objet. Une fois la valeur d’identité définie, la méthode Save() ajoute l’objet à la collection Items.
La méthode GetById() utilise la propriété Id sur l’interface IInt32Id et émet une requête LINQ sur la collection Items afin de trouver le premier objet avec la valeur Id. Pour créer la fonctionnalité de test unitaire UsernameExists(), vous devez implémenter la méthode GetByUser Name() définie sur IUser Repository. Pour cela, vous créez simplement une classe intitulée In MemoryUserReposi tory et étendez celle-ci à partir de Repository Mock
Avec cette implémentation en mémoire, vous ne vous souciez plus de savoir si la base de données est opérationnelle, si elle contient d’anciennes données et si elle comporte des contraintes de clé étrangère. La configuration pour le test UsernameExists() revient à ajouter simplement des instances
de User à la collection Items via des appels à Save(). Voici la logique de configuration pour le test Username Exists().
Téléchargez cette ressource
Microsoft 365 Tenant Resilience
Face aux failles de résilience des tenants M365 (configurations, privilèges, sauvegarde). Découvrez 5 piliers pour durcir, segmenter et surveiller vos environnements afin de limiter l’impact des attaques. Prioriser vos chantiers cyber et améliorer la résilience de vos tenants Microsoft 365.
Les articles les plus consultés
- N° 2 : Il faut supporter des langues multiples dans SharePoint Portal Server
- Les 6 étapes vers un diagnostic réussi
- Partager vos images, vidéos, musique et imprimante avec le Groupe résidentiel
- Et si les clients n’avaient plus le choix ?
- Cybersécurité Active Directory et les attaques de nouvelle génération
Les plus consultés sur iTPro.fr
- Analyse Patch Tuesday Juin 2026
- La bataille de la 6G se gagne dans la donnée en temps réel
- BlueSecure repense la sensibilisation à la cybersécurité avec des formats immersifs et engageants
- Les agents d’IA fragilisent la sécurité : pour les sécuriser, inutile de repartir de zéro
Articles les + lus
Computex 2026 : 5 signaux forts à retenir
La chaîne d’approvisionnement, point de rupture récurent du SI
Microsoft Build 2026 : contre-offensive des modèles maison face à OpenAI et Anthropic
Rhea1 : SiPearl allume le CPU européen le plus ambitieux pour le HPC et l’IA souveraine
Analyse Patch Tuesday Mai 2026
À la une de la chaîne Tech
- Computex 2026 : 5 signaux forts à retenir
- La chaîne d’approvisionnement, point de rupture récurent du SI
- Microsoft Build 2026 : contre-offensive des modèles maison face à OpenAI et Anthropic
- Rhea1 : SiPearl allume le CPU européen le plus ambitieux pour le HPC et l’IA souveraine
- Analyse Patch Tuesday Mai 2026
