Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用列表模拟方法<;int>;as参数和返回列表<&燃气轮机;最小起订量_C#_.net_Mocking_Moq - Fatal编程技术网

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的答案。