[英]Mapper not initialized in Asp.Net Core 2 test project
我已經為Asp.Net Core 2應用程序創建了一個測試項目。 這是我的測試:
[Fact]
public void GetBlogs()
{
var builder = new DbContextOptionsBuilder<Context>();
builder.UseInMemoryDatabase();
var options = builder.Options;
using (var context = new Context(options))
{
//add new objects (removed for example)
context.AddRange(blogs);
context.SaveChanges();
}
using (var context = new Context(options))
{
var config = new AutoMapper.MapperConfiguration(cfg =>
{
cfg.AddProfile(new DomainToViewModelMappingProfile());
cfg.AddProfile(new ViewModelToDomainMappingProfile());
});
var mapper = config.CreateMapper();
var repository = new BlogRepository(context, mapper);
var blogs = repository.GetBlogs();
TODO: Add Asserts
}
}
這是我的GetBlogs方法:
public IEnumerable<GetBlogsQuery> GetBlogs()
{
//UpdateBlogsAsync();
CheckInactiveBlogs();
return _context.Blogs.Where(x => x.IsActive).ProjectTo<GetBlogsQuery>();
}
和BlogRepository類的構造函數:
public BlogRepository(Context context, IMapper mapper)
{
_context = context;
_mapper = mapper;
}
但是然后測試嘗試調用ProjectTo我收到一條錯誤消息:
System.InvalidOperationException:'映射器未初始化。 用適當的配置調用初始化。 如果您嘗試通過容器或其他方式使用mapper實例,請確保沒有對靜態Mapper.Map方法的任何調用,並且如果您使用的是ProjectTo或UseAsDataSource擴展方法,請確保傳遞適當的IConfigurationProvider實例。”
你能告訴我我做錯了嗎?
謝謝
更新:這是我的Automapper配置類:
public class AutoMapperConfig
{
public static MapperConfiguration RegisterMappings()
{
return new MapperConfiguration(cfg =>
{
cfg.AddProfile(new DomainToViewModelMappingProfile());
cfg.AddProfile(new ViewModelToDomainMappingProfile());
});
}
}
如果您沒有在ProjectTo
Extension上提供MapperConfiguration
的實例作為參數,則在這種情況下您不必使用static API來初始化Automapper。
您需要像下面這樣初始化Automapper:
Mapper.Initialize(cfg =>
{
cfg.AddProfile(new DomainToViewModelMappingProfile());
cfg.AddProfile(new ViewModelToDomainMappingProfile());
});
ProjectTo的文檔: https : //github.com/AutoMapper/AutoMapper/wiki/Queryable-Extensions#parameterization
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.