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

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

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

我想设置一个moq方法GetList,这个方法接收一个boolas参数.我想回复IUser列表哪里IsValid是真的.

我试过这个:

Mock<IUsers> mockUserRepository = new Mock<IUsers>();

mockUserRepository.Setup(mr => mr.GetList(It.IsAny<bool>()))
    .Returns((bool i) => _users.Select(x => x.IsValid == i));
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误: cannot convert List<bool> to List<IUser>

class User : IUser
{
   public bool IsValid { get; set; }
}

interface IUser
{
   bool IsValid { get; set; }
}

interface IUsers
{
    List<IUser> GetList(bool isActive);
}
Run Code Online (Sandbox Code Playgroud)

slo*_*oth 5

如果要返回IsValid为true的IUser列表,当您应该返回列表而IUser不是其中的集合时bool,请使用Where过滤列表而不是Select.

// returns IEnumerable<boolean>
.Returns((bool i) => _users.Select(x => x.IsValid == i)); 
Run Code Online (Sandbox Code Playgroud)

应该

// returns List<IUser>
.Returns((bool i) => _users.Where(x => x.IsValid == i).ToList());
Run Code Online (Sandbox Code Playgroud)