You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用AutoMapper和Moq映射列表并配置Mock返回列表结果?

解决Mock返回列表的配置问题

你代码失败的核心原因是方法名拼写错误:Moq里用来设置返回值的方法是Returns,不是Return,修正这个就能让基础配置生效。

基础场景:直接返回预定义列表

如果只是想让GetListCustomers()返回你提前准备好的listCustomersDTO列表,修正后的代码如下:

mock.GetMock<ICustomerRepository>().Setup(c => c.GetListCustomers()).Returns(listCustomersDTO);

进阶场景:基于另一个列表动态生成返回结果

如果需要Mock的方法依赖某个输入列表(比如根据传入的ID列表过滤返回结果),可以用带委托的Returns重载,动态处理源列表并返回:

// 假设你有一个作为数据源的基础列表
var baseCustomerList = new List<CustomerDTO> 
{
    new CustomerDTO { Id = 1, Name = "张三" },
    new CustomerDTO { Id = 2, Name = "李四" }
};

// 假设方法签名是 GetListCustomers(List<int> customerIds)
mock.GetMock<ICustomerRepository>()
    .Setup(c => c.GetListCustomers(It.IsAny<List<int>>()))
    // 根据传入的ID列表,从基础列表中过滤出对应项
    .Returns((List<int> inputIds) => 
        baseCustomerList.Where(c => inputIds.Contains(c.Id)).ToList());

额外注意点

  • 如果要返回列表的副本(避免测试中修改返回值影响原列表),可以在Returns里返回listCustomersDTO.ToList()或者用其他方式创建新列表
  • 确保listCustomersDTO对象在Setup时已经正确初始化,不要是null

内容的提问来源于stack exchange,提问作者Nolasco Souza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 05:47:09