在Moq中返回列表的子集

tahasozgen2

我想测试一个返回复杂类型列表的函数。因此,我需要moq来模拟此功能。该函数是
IEnumerable(Worker> ReadWorkerList(AcademicTitle标题);

在最小起订量的设置部分中,我创建了一个人工的工人列表(代码1),并且无法指示最小起订量返回满足参数中AcademicTitle标准的工人列表的子集。(代码2)

我已阅读以下网址,但找不到解决方案。

返回与条件 Moq 匹配的列表子集,使用Where()Mock对象返回带有Moq的模拟列表 MOQ C#QUERIES It.IsAny返回列表 MOQ中的重载返回值

工人的定义:

public class Worker
{

    public string Name { get; set; }

    public string Surname { get; set; }       

    public AcademicTitle Title { get; set; }

}

//Moq implementation: (code-1)
internal static Mock<IWorkerRepository> GetIWorkerRepository ()
{

   try
   {
      if (_workerRepositoryMock == null)
      {
         //artifical worker list
         List<Worker> workerList = new List<Worker>() {
             new Worker("name1", "surname1",AcademicTitle.Doctor),
             new Worker("name2", "surname2",AcademicTitle.Empty),
             new Worker("name3", "surname3",AcademicTitle.AssociateProfessor),
             new Worker("name4", "surname4",AcademicTitle.Professor),


         };

         _workerRepositoryMock = new Mock<IWorkerRepository>();
         _workerRepositoryMock.Setup(m => m.ReadWorkerList(It.IsAny<AcademicTitle>())).Returns(new List<Worker>());

         //Code -2

         _workerRepositoryMock.Setup(m => m.ReadWorkerList(It.Is<AcademicTitle>(v=>v != AcademicTitle.Empty))).Returns(workerList.Where(p=>p.Title  == v));


        }
           return _workerRepositoryMock;

    }catch (Exception hata)
    {
         throw hata;
    }

}

预期的结果是,当我使用特定的AcademicTitle参数调用ReadWorkerList函数时,例如Professor应仅返回包含name4的列表

强尼

应该有可能,试试这个:

_workerRepositoryMock
    .Setup(m => m.ReadWorkerList(It.Is<AcademicTitle>(v => v != AcademicTitle.Empty)))
    .Returns((AcademicTitle v) => workerList.Where(p => p.Title == v));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章