我正在嘗試單元測試使用Automapper ProjectTo的方法,我不確定如何在MVC Core中註冊映射。我正在使用內置的單元測試。MVC Core 2.0單元測試和自動映射器
以下是我的單元測試。
[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());
}
}
}
我收到以下錯誤,當我運行測試:
消息:試驗方法GotNext.Test.BusinessGenderServiceTest.GetTest拋出異常:
System.InvalidOperationException:映射器未初始化。通過適當的配置調用Initialize。如果您嘗試通過容器或其他方式使用映射器實例,請確保您沒有任何對靜態Mapper.Map方法的調用,並且如果您使用的是ProjectTo或UseAsDataSource擴展方法,請確保將適當的IConfigurationProvider實例。
1.這不是一個單元測試,它是一個集成測試,因爲你沒有測試的類唯一還對外依賴(AutoMapper,的DbContext)2只使用automapper分佈圖,其中你把你的註冊,然後註冊他們在你的集成測試 – Tseng
@Tseng關於#2)...你怎麼「把你的註冊,然後註冊他們在你的集成測試」?我有一個用於生產代碼的配置文件類...但我不知道如何在集成測試中使用它。幫幫我? :) –
nm ...我發現這個:https://github.com/AutoMapper/AutoMapper/wiki/Configuration –