Comment procéder à l'injection de dépendance dans le test d'intégration?
Appelant le Département du département CODE> ou
DÉMARKAppService CODE>, me donne
NULL code> et erreur ci-dessous.
DepartmentAppService(departmentRepository, mapper)
DepartmentRepository(dbcontext)
3 Réponses :
Utiliser MOQ, vous pourrez simuler les dépilés puis les transmettre à votre service. Par exemple, votre méthode de test pourrait ressembler à:
//arrange var company = new company() { company_name = "TCS" }; var mockRepo = new Mock<ICompany>(); mockRepo.Setup(x => x.InsertCompany(company)).Returns(true); var companyObject = new Company(mockRepo.Object); var retrnData = companyObject.InsertCompany(company)
Ceci est pour les tests unitaires, la question initiale est concernant le test d'intégration. Un test d'intégration devrait aller contre une vraie base de données et renvoyer des données réelles, non moquées. L'idée est de tester tout ce qui serait exécuté lorsque la ligne du code s'exécute.
Si vous utilisez la variable locale de ministèreAppService, c'est NULL. Votre objet est dans le conteneur. Vous pouvez récupérer cela en appelant la méthode getrequiredservice ou getvis.
J'ai utilisé le serviceCollection dans une application de console comme cette voie. P>
IServiceCollection services = new ServiceCollection(); services.AddSingleton<IDepartmentAppService, DepartmentAppService>(); using (ServiceProvider serviceProvider = services.BuildServiceProvider()) { var departmentAppService = serviceProvider.GetRequiredService<IDepartmentAppService>(); await departmentAppService.GetDepartmentById(2); }
Merci, c'est dans ma classe de fait, alors comment je séparerais-je? var interpartiquement = attendre ministèreAppService.getDepartmentAid (2);
Aussi besoin de la façon de déclarer ce nouveau ministèreAppservice (ministère duparpository, Mapeur); , Je vais mettre à jour la question
Cela dépend de vos besoins. 1) Dans le constructeur, vous pouvez créer le conteneur et récupérer les objets pour initialiser les variables locales. 2) Le glassfixture est une fonctionnalité utile pour garder vos variables (ne les perdez pas). 3) ...
Pour nos tests d'intégration, nous démarquons de manière programmative l'application et utilisez httpClient pour effectuer des appels contre les points d'extrémité de l'API. De cette façon, votre application fonctionne à travers l'ensemble du processus de démarrage et de l'injection de dépendance fonctionne comme un charme.
Voici un exemple du démarrage du serveur et de la création de clients, il peut être réutilisé pour plusieurs tests: p> Il est également documenté par Microsoft comme celui-ci avec le httpClient: < BR>
https://docs.microsoft. COM / EN-US / ASPNET / Core / Test / Test / Tests d'intégration? Affichage = aspnetcore-2.2 p> p>
salut @ yush0 pouvez-vous revoir cette question que cela ne fonctionne pas
En fait, vous pouvez utiliser la classe de démarrage à partir de l'application en cours de test (.uSeSetartup
@Ewertonews: Oui ça marche aussi. Dans mon cas, j'ai hérité de TestStartup du démarrage pour remplacer certaines fonctions concernant l'authentification.
hm .. sympa .. c'est vrai.
@Izzy, je peux exécuter une injection de dépendance dans le programme actuel, mais pas Xunit, votre lien n'est pas connexe et provoquant un drapeau sur la question, merci
Avoir un look ici b>
A la façon dont vous pouvez utiliser ce
services.addddddTransient, BasserePositoire <>> (); code>
Dupliqué possible de Test de l'unité IServicecollection Enregistrement , ce députation Comment tester l'unité avec injection de dépendance