【发布时间】:2019-07-25 16:30:04
【问题描述】:
我想测试一个返回复杂类型列表的函数。所以我需要起订量来模拟这个功能。函数是
IEnumerable(Worker> ReadWorkerList(AcademicTitle title);
在起订量的设置部分,我创建了一个人工 Worker 列表 (代码 1)并且我无法指示 moq 返回满足参数中 AcademicTitle 标准的工人列表子集。 (code-2)
我已阅读以下网址,但找不到解决方案。
Return Subset of List that Matches Condition Moq Return using Where() Mock object returning a list of mocks with Moq MOQ C# QUERIES It.IsAny returning a List Overloaded return values in 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 的列表应该被退回。
【问题讨论】:
-
可以分享
ReadWorkerList方法的签名吗? -
IEnumerable (Worker> ReadWorkerList(AcademicTitle title);对不起,有些字符打印不正确。