【问题标题】:Moq Return using Where()使用 Where() 返回最小起订量
【发布时间】:2014-12-19 01:38:36
【问题描述】:

我正在尝试设置一个模拟来从集合中返回数据:

    private IList<DutyCategory> dutyCategories;
    private Mock<IDutyCategoryService> mockService;

    [TestInitialize()]
    public void UnitTestSetup()
    {
        dutyCategories = new List<DutyCategory>()
        {
            new DutyCategory(){Description = "Description",ID = 1,IsActive = true,Name = "Test 1",OrganizationID = 1}
        };
        mockService = new Mock<IDutyCategoryService>();
        mockService.Setup(a => a.GetDutyCategories()).ReturnsAsync(dutyCategories);
        mockService.Setup(a => a.GetDutyCategoriesByOrganization(It.IsAny<int>()))
            .ReturnsAsync((int id) => dutyCategories.Where(n=>n.OrganizationID == id));
    }

UnitTestSetup 中的最后一行是问题所在。我收到以下错误:

无法将 lambda 表达式转换为类型“System.Collections.Generic.IEnumerable”,因为它不是委托类型

我如何模拟 GetDutyCategoriesByOrganization 以便它返回列表 dutyCategories 的子集?

【问题讨论】:

    标签: c# unit-testing moq


    【解决方案1】:

    这似乎有效:

     .Returns<int>(i => Task.FromResult(dutyCategories.Where(n => n.OrganizationID == i)));
    

    【讨论】:

      猜你喜欢
      • 2020-07-25
      • 2021-12-17
      • 2014-10-23
      • 2021-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-25
      • 1970-01-01
      相关资源
      最近更新 更多