2013-04-04 53 views
3

返回一个列表<>在我的测试,我定义为数据的List<IUser>在一些记录。模拟与布尔作为参数的方法,并用起订量

我想设置一个起订的梅索德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); 
} 
+0

我已经删除无关的代码......随时恢复。 – 2013-04-04 07:01:23

回答

5

如果你想返回IUSER列表,IsValid的是真的,当你要返回一个列表的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());