Slim Ayache
Dec 11, 2018 · 2 min read

Introduction

Dans ce bref article nous allons voir comment implémenter des tests unitaires pour nous assurer que notre configuration d’injection de dépendance dans ASP.Net Core est correcte.

Nous utiliserons le conteneur d’injection fourni par défaut par le framework qui se trouve sous le namespace Microsoft.Extensions.DependencyInjection.

Pour voir le source code du project, cliquez ici.

Pourquoi tester l’injection de dépendance ?

L’intérêt des tests unitaires et d’intégration en général est d’assurer le bon déroulement de l’exécution, c’est à dire l’état et le comportement correct de notre code en runtime.

Une erreur dans la configuration de l’injection de dépendance peut passer inaperçue au moment de la compilation mais crasher à l’exécution.

Un changement de signature du constructeur d’un service ou une mauvaise configuration sont deux exemples pouvant entraîner un désastre. Et en bons automates, nous allons naturellement assurer notre survie via des tests unitaires.

Créer et injecter nos services dans le web api

Il faut commencer par créer un nouveau project .Net Core ASP.Net Core Web Application en ajoutant le code suivant pour les services:

La configuration des dépendances se fait au niveau de la classe Startup en ajoutant la méthode ConfigureDependencies.

Créer une première version de test unitaire

Pour les tests unitaires, nous allons utiliser xUnit, ainsi que NSubstitute et NFluent respectivement pour le mock et les assertions. Enfin, il faudra ajouter la référence à Microsoft.AspNetCore.App.

On peut alors ajouter une classe de test vide qu’on appelera StartupTest .

Dans la méthode de test Nous commencerons par initialiser nos entrées.

Pouter tester de l’injection de ILogger , il faut vérifier que l’instance crée n’est pas nulle et de type Logger. Ce sera pareil pour IRepository, en ajoutant en vérification de la valeur de IsSimulation.

Refactoring de la classe de test

On peut rendre la classe de test plus générique en ajoutant la méthode CheckResolvedObject et sa surcharge. Avec ceci notre vérification ne tiendra plus qu’en deux lignes comme le montre la version finale du code ci dessous :

YounitedTech

Le blog Tech de Younited, où l’on parle de développement, d’architecture, de microservices, de cloud, de data… Et de comment on s’organise pour faire tout ça. Ah, et on recrute aussi, on vous a dit ?

Slim Ayache

Written by

Software developer (and I like it). Speak AR, FR, EN. Interests in photography, music, and one billion other things. Follow me : @nemantro

YounitedTech

Le blog Tech de Younited, où l’on parle de développement, d’architecture, de microservices, de cloud, de data… Et de comment on s’organise pour faire tout ça. Ah, et on recrute aussi, on vous a dit ?

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade