gpt4 book ai didi

c# - 如何在 .Net Core Web API 项目中对使用 Mapper 的方法进行单元测试

转载 作者:行者123 更新时间:2023-12-03 08:02:14 26 4
gpt4 key购买 nike

我正在开发一个 .net core Web api 项目,并为我的方法编写一些单元测试。我的一个测试用例无法计算预期输出。

在测试项目中,我有以下代码:

_mockBaseDbContext.Setup(c => c.Transactions).Returns(mockTransactions.Object);
var actualResult = await _service.Get(transactionId);

在web api中,我有相应的方法如下:

public async Task<TransactionViewModel> Get(Guid id)
{
var transaction = await GetById(id);
var result = _mapper.Map<TransactionViewModel>(transaction);
return result;
}

所以,当我运行测试用例时,它找到了事务 var transaction = await GetById(id); //works fine但它只是无法将 Transaction 映射到 TransactionViewModel

_mapper.Map<TransactionViewModel>(transaction); //returns null

我在startup.cs中有映射配置文件,当我运行Web api时它可以工作,我的意思是我已经编写了一个端点,它以guid为参数并调用我的meyhod,然后它毫无问题地返回事务 View 模型.

CreateMap<Transaction, TransactionViewModel>()
.ForMember(dest => dest.Client, opt => opt.MapFrom(src => src.Client))
.ForMember(dest => dest.ShopId, opt => opt.MapFrom(src => src.ShopId));

所以我的问题是有没有办法获取从我的 Get 方法返回的 View 模型?提前致谢。

最佳答案

来源:https://www.thecodebuzz.com/unit-test-mock-automapper-asp-net-core-imapper/

您可以按如下方式使用您的配置文件映射器:

private static IMapper _mapper;
public testContsructor()
{
if (_mapper == null)
{
var mappingConfig = new MapperConfiguration(cfg =>
{
cfg.AddProfile(new UserProfile());
});
IMapper mapper = mappingConfig.CreateMapper();
_mapper = mapper;
}
}

关于c# - 如何在 .Net Core Web API 项目中对使用 Mapper 的方法进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73650611/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com