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

时间:2013-04-04 06:43:23

标签: c# .net mocking moq

在我的测试中,我将数据定义为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);
}

1 个答案:

答案 0 :(得分:5)

如果你想返回IsValid为真的IUser列表,当你应该返回IUser的列表而不是bool的集合时,请使用{{ 1}}过滤列表而不是Where

Select

应该是

// returns IEnumerable<boolean>
.Returns((bool i) => _users.Select(x => x.IsValid == i));