模拟以bool作为参数的方法并返回List<>Moq
本文关键字:返回 List Moq 方法 bool 参数 模拟 | 更新日期: 2023-09-27 18:07:16
在我的测试中,我将数据定义为具有某些记录的List<IUser>
。
我想设置一个moq方法GetList
,这个方法接收一个bool
作为参数。我想返回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));
但是我得到这个错误: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);
}
如果您想返回IUser列表,其中IsValid为true,当您应该返回IUser
的列表时,而不是bool
的集合,因此使用Where
来过滤列表而不是Select
。
// returns IEnumerable<boolean>
.Returns((bool i) => _users.Select(x => x.IsValid == i));
应该// returns List<IUser>
.Returns((bool i) => _users.Where(x => x.IsValid == i).ToList());