0
votes

NET NOE: Injection de dépendance dans le test d'intégration

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)


4 commentaires

@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


A la façon dont vous pouvez utiliser ce services.addddddTransient , BasserePositoire <>> ();


Dupliqué possible de Test de l'unité IServicecollection Enregistrement , ce députation Comment tester l'unité avec injection de dépendance


3 Réponses :


-2
votes

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)


1 commentaires

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.



0
votes

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);
}


3 commentaires

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) ...



3
votes

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: xxx

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


4 commentaires

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 () au lieu de teststartup), puis utilisez les services tels que celui-ci: myservice = _server.services.getrequiitédservice ();


@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.