返回最小起订量列表的子集
Returning Subset Of List in Moq
我想测试一个 return 复杂类型列表的函数。所以我需要最小起订量来模拟这个功能。函数是
IEnumerable (Worker> ReadWorkerList(AcademicTitle title);
在最小起订量的设置部分,我创建了一个人工 Worker 列表
(code-1) 并且我无法指示 moq return 满足参数中 AcademicTitle 标准的工人列表的子集。 (代码-2)
我已阅读以下网址,但找不到解决方案。
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 应该 returned.
应该可以,试试这个:
_workerRepositoryMock
.Setup(m => m.ReadWorkerList(It.Is<AcademicTitle>(v => v != AcademicTitle.Empty)))
.Returns((AcademicTitle v) => workerList.Where(p => p.Title == v));
我想测试一个 return 复杂类型列表的函数。所以我需要最小起订量来模拟这个功能。函数是
IEnumerable (Worker> ReadWorkerList(AcademicTitle title);
在最小起订量的设置部分,我创建了一个人工 Worker 列表 (code-1) 并且我无法指示 moq return 满足参数中 AcademicTitle 标准的工人列表的子集。 (代码-2)
我已阅读以下网址,但找不到解决方案。
工人定义:
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 应该 returned.
应该可以,试试这个:
_workerRepositoryMock
.Setup(m => m.ReadWorkerList(It.Is<AcademicTitle>(v => v != AcademicTitle.Empty)))
.Returns((AcademicTitle v) => workerList.Where(p => p.Title == v));