Ich versuche Unit-Test eine Methode, die Automapper ProjectTo verwendet und ich bin mir nicht sicher, wie die Zuordnungen in MVC Core registrieren. Ich benutze den eingebauten Komponententest.MVC Core 2.0 Einheit Testing und Automapper
Folgendes ist mein Komponententest.
[TestClass]
public class BusinessGenderServiceTest
{
[ClassInitialize]
public static void Init(TestContext context)
{
}
[TestMethod]
public void GetTest()
{
var options = new DbContextOptionsBuilder<GotNextDbContext>()
.UseInMemoryDatabase(databaseName: "GetTest")
.Options;
using (var context = new GotNextDbContext(options))
{
context.GenderLanguage.Add(new GenderLanguage { Id = 1, Name = "Male", Language = 1 });
context.GenderLanguage.Add(new GenderLanguage { Id = 2, Name = "Female", Language = 1 });
context.GenderLanguage.Add(new GenderLanguage { Id = 3, Name = "Hombre", Language = 2 });
context.GenderLanguage.Add(new GenderLanguage { Id = 4, Name = "Hombre", Language = 2 });
context.SaveChanges();
}
using (var context = new GotNextDbContext(options))
{
var service = new GenderService(context);
var result = service.Get(1);
Assert.AreEqual(2, result.Count());
}
}
}
Ich erhalte die folgende Fehlermeldung, wenn ich den Test ausführen:
Nachricht: Prüfnorm GotNext.Test.BusinessGenderServiceTest.GetTest warf Ausnahme:
System.InvalidOperationException: Mapper nicht initialisiert . Rufen Sie Initialize mit der entsprechenden Konfiguration auf. Wenn Sie versuchen, Mapper-Instanzen über einen Container oder auf andere Weise zu verwenden, stellen Sie sicher, dass Sie keine Aufrufe der statischen Mapper.Map-Methoden haben. Wenn Sie die Erweiterungsmethoden ProjectTo oder UseAsDataSource verwenden, stellen Sie sicher, dass Sie den entsprechenden IConfigurationProvider übergeben Beispiel.
1. Das ist nicht ein Gerät zu testen, es ist ein Integrationstest, da Sie nicht die Klasse nur testen, sondern auch externe Abhängigkeiten (AutoMapper, DbContext) 2. nur AutoMapper Profile verwenden, wo Sie geben Ihre Registrierungen ein und registrieren sie dann in Ihrem Integrationstest – Tseng
@Tseng bezüglich # 2) ... WIE "setzen Sie Ihre Registrierungen ein und registrieren sie dann in Ihrem Integrationstest"? Ich habe eine Profiles-Klasse, die im Produktionscode verwendet wird ... aber ich habe keine Ahnung, wie ich sie im Integrationstest verwenden soll. Hilfe? :) –
nm ... Ich habe folgendes gefunden: https://github.com/AutoMapper/AutoMapper/wiki/Configuration –