1

I'm trying to set up a mock to return data from a collection:

    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));
    }

That last line in the UnitTestSetup is the problem. I get the following error:

Cannot convert lambda expression to type 'System.Collections.Generic.IEnumerable' because it is not a delegate type

How do i mock GetDutyCategoriesByOrganization so that it returns a subset of list dutyCategories?

scifirocket
  • 1,051
  • 1
  • 15
  • 23

1 Answers1

0

This appears to work:

 .Returns<int>(i => Task.FromResult(dutyCategories.Where(n => n.OrganizationID == i)));
scifirocket
  • 1,051
  • 1
  • 15
  • 23