我想测试一个返回复杂类型列表的函数。因此,我需要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] 删除。
我来说两句