使用List <int>作为参数模拟一个方法,并使用Moq返回List <>

Kri*_*s-I 4 .net c# moq mocking

在我的测试中,我将数据定义为数据a List<IUser>.

我想为方法GetList设置一个moq,这个方法接收一个List<int>作为参数.这是一个ID列表; 我想在这些Ids中返回IUser列表List<IUser>

我试过这个,但我没有找到正确的退货语法

Mock<IUsers> mockUserRepository = new Mock<IUsers>();
_mockUserRepository.Setup(m => m.GetListAll(It.IsAny<List<int>>())).Returns(????????);
Run Code Online (Sandbox Code Playgroud)

我试过这样的事情:

_mockUserRepository.Setup(m => m.GetListAll(It.IsAny<List<int>>())).Returns(u =>_users.Contains(???));
Run Code Online (Sandbox Code Playgroud)

谢谢,

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)
    {
        //....
    }
}
Run Code Online (Sandbox Code Playgroud)

Vya*_*kov 9

试试这个:

mock.Setup(users => users.GetListAll(It.IsAny<List<int>>()))
            .Returns<List<int>>(ids =>
                {
                    return _users.Where(user => ids.Contains(user.Id)).ToList();
                });
Run Code Online (Sandbox Code Playgroud)