C# 使用列表模拟方法<;int>;as参数和返回列表<&燃气轮机;最小起订量
在我的测试中,我将数据定义为一个C# 使用列表模拟方法<;int>;as参数和返回列表<&燃气轮机;最小起订量,c#,.net,mocking,moq,C#,.net,Mocking,Moq,在我的测试中,我将数据定义为一个列表,其中包含一些记录 我想为方法GetList设置一个moq,这个方法接收一个List作为参数。这是一个ID列表;我想在列表中返回带有这些ID的IUser列表 我试过了,但没有找到正确的返回语法 Mock<IUsers> mockUserRepository = new Mock<IUsers>(); _mockUserRepository.Setup(m => m.GetListAll(It.IsAny<List<in
列表
,其中包含一些记录
我想为方法GetList设置一个moq,这个方法接收一个List
作为参数。这是一个ID列表;我想在列表中返回带有这些ID的IUser列表
我试过了,但没有找到正确的返回语法
Mock<IUsers> mockUserRepository = new Mock<IUsers>();
_mockUserRepository.Setup(m => m.GetListAll(It.IsAny<List<int>>())).Returns(????????);
Mock mockUserRepository=new Mock();
_mockUserRepository.Setup(m=>m.GetListAll(It.IsAny())。返回(???);
我试过这样的方法:
_mockUserRepository.Setup(m => m.GetListAll(It.IsAny<List<int>>())).Returns(u =>_users.Contains(???));
\u mockUserRepository.Setup(m=>m.GetListAll(It.IsAny())。返回(u=>\u users.Contains(?);
谢谢
class User : IUser
{
public int Id { get; set; }
public string Firsname { get; set; }
public string Lastname { get; set; }
}
interface IUser
{
int Id { get; set; }
string Firsname { get; set; }
string Lastname { get; set; }
}
interface IAction
{
List<IUser> GetList(List<int> listId);
}
class Action : IAction
{
public List<IUser> GetList(List<int> listId)
{
//....
}
}
class用户:IUser
{
公共int Id{get;set;}
公共字符串Firsname{get;set;}
公共字符串Lastname{get;set;}
}
接口IUser
{
int Id{get;set;}
字符串Firsname{get;set;}
字符串Lastname{get;set;}
}
界面位移
{
List GetList(List listId);
}
集体诉讼:IAction
{
公共列表GetList(列表listId)
{
//....
}
}
只需返回准备好的列表:
_mockUserRepository.Setup(m => m.GetListAll(It.IsAny<List<int>>())).Returns(_users);
\u mockUserRepository.Setup(m=>m.GetListAll(It.IsAny())。返回(\u用户);
试试这个:
mock.Setup(users => users.GetListAll(It.IsAny<List<int>>()))
.Returns<List<int>>(ids =>
{
return _users.Where(user => ids.Contains(user.Id)).ToList();
});
mock.Setup(users=>users.GetListAll(It.IsAny()))
.Returns(id=>
{
返回_users.Where(user=>Id.Contains(user.Id)).ToList();
});
如果您有多个过滤器参数,则可以使用此示例
mock.Setup(o=>o.getListalAsync(It.IsAny(),It.IsAny())
.ReturnsAsync((int[]id,字符串名)=>
{
返回用户
.Where(user=>ids.Contains(user.Id)&&user.Firstname.Equals(Firstname))
.ToList();
});
对不起,我已经尝试过这个解决方案了,但是在结果中,我得到了完整的列表,但是我不想完整的Listin这个例子看VVS0205的答案。