저는 Asp.Net Core 2 app 용 테스트 프로젝트를 만들었습니다. 내 GetBlogs 방법이야 여기Mapper가 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
}
}
:
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를 호출 할 여기 내 테스트입니다 메시지 :
S ystem.InvalidOperationException : '매퍼가 초기화되지 않았습니다. 으로 전화하십시오. 적절한 구성으로 초기화하십시오. 맵퍼 인스턴스를 컨테이너 또는 기타 방법을 통해 사용하려는 경우 에 정적 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());
});
}
}
*, 적절한 IConfigurationProvider 인스턴스를 전달해야합니다 * –
왜 내가 여기에 투표를하지 않을지 모르십니까? 나는 너를 도우려고 노력하고있어. 설명해 주겠다고? –
방금 답변에 올린 코멘트를 삭제 한 것으로 나타 났습니까? "하지만 어떻게 BlogRepository 생성자에 객체를 전달할 수 있습니까?" 당신이 할 수있는 일을 당신에게 설명했습니다. 여기서 어떤 문제가 있습니까? –