我正在嘗試通過包含 AutoMapper 使用的存儲庫測試從我的 ASP.NET Core 控制器到數據庫的路徑。這是我的存儲庫:using System;using System.Linq;using AutoMapper;using DS.DTO.MasterData;using DS.Utilities.DSExceptions;using Microsoft.Extensions.Logging;using Omu.ValueInjecter;namespace DS.MasterData.Repositories{ public class PersonFactRepository : IPersonFactRepository { private readonly Database.MasterDataContext dbContext; private readonly ILogger<PersonFactRepository> logger; private readonly IMapper mapper; public PersonFactRepository(ILogger<PersonFactRepository> logger, Database.MasterDataContext dbcontext, IMapper mapper) { this.dbContext = dbcontext; this.mapper = mapper; this.logger = logger; } public PatientDto CreatePatient(CreatePatientDto inModel) { var dbPersonDim = mapper.Map<CreatePatientDto, Database.PersonDim>(inModel); var dbAddressDim = mapper.Map<CreatePatientDto, Database.AddressDim>(inModel); var dbPhoneDim = mapper.Map<CreatePatientDto, Database.PhoneDim>(inModel); var dbPersonFact = new Database.PersonFact { FactId = Guid.NewGuid() }; dbPersonDim.PersonFact = dbPersonFact; dbAddressDim.PersonFact = dbPersonFact; dbPhoneDim.PersonFact = dbPersonFact; } }}我的問題是如何將我的 Mapper 配置放入我的 fakeMapper 中?var inMemDB = Fakes.FakeDB.DB;var loggerCntl = Substitute.For<ILogger<Controllers.PatientController>>();var loggerPersonFactRepo = Substitute.For<ILogger<Repositories.PersonFactRepository>>();AutoMapper.IMapper fakeMapper = ????var personRepo = new PersonFactRepository(loggerPersonFactRepo, inMemDB, fakeMapper);我有意進行集成測試,因為我希望我的測試能夠將數據發布到控制器并測試正確的數據是否最終出現在正確的表中。
1 回答

搖曳的薔薇
TA貢獻1793條經驗 獲得超6個贊
創建映射器提供程序
public class MapperProvider
{
public MapperProvider() {
}
public MapperConfiguration GetMapperConfig()
{
var mce = new MapperConfigurationExpression();
mce.AddProfile<AutoMapperConfig>();
var mc = new MapperConfiguration(mce);
return mc;
}
}
注冊映射配置
AutoMapper.IMapper fakeMapper = new Mapper(new
MapperProvider().GetMapperConfig());
- 1 回答
- 0 關注
- 214 瀏覽
添加回答
舉報
0/150
提交
取消