C# 如何使用Moq传递列表参数
我试图模拟一个采用两个参数的方法,该方法的签名如下所示:C# 如何使用Moq传递列表参数,c#,moq-3,C#,Moq 3,我试图模拟一个采用两个参数的方法,该方法的签名如下所示: User DoSomething(User user, List<Role> newRoleList); User DoSomething(User-User,List-newRoleList); 我希望此方法仅在“newRoleList”参数包含一些预定义角色和特定用户名时返回某些内容。因此,我没有使用It.IsAny而是尝试使用It.Is。我面临的问题是第二个参数。如何设置第二个参数 我正在努力实现这样的目标: Lis
User DoSomething(User user, List<Role> newRoleList);
User DoSomething(User-User,List-newRoleList);
我希望此方法仅在“newRoleList”参数包含一些预定义角色和特定用户名时返回某些内容。因此,我没有使用It.IsAny
而是尝试使用It.Is
。我面临的问题是第二个参数。如何设置第二个参数
我正在努力实现这样的目标:
List<Role> roleList = new List<Role>()
{
new Role() { RoleName="RoleOne},
new Role() { RoleName="RoleTwo"}
};
mockComponent.Setup(x => x.UpdateUserRoles(
It.Is<User>(user1 => user1.UserName == "DummyUser"),
It.Is<List<Role>>(y=>y==roleList)
))
.Returns(user);
List roleList=新列表()
{
新角色(){RoleName=“RoleOne},
新角色(){RoleName=“RoleTwo”}
};
mockComponent.Setup(x=>x.UpdateUserRoles(
It.Is(user1=>user1.UserName==“DummyUser”),
It.Is(y=>y==roleList)
))
.退货(用户);
但是它总是返回“null”。如果我将第二个参数更改为It.IsAny()
,那么它将返回一个正确的值
请建议如何实现这一点,是否有更好的方法提供特定列表作为参数或什么?最后我找到了解决方案,我需要在设置中指定如何将两个列表同等对待的标准 我已将代码更改为: mockComponent.Setup(x=>x.UpdateUserRoles(It.Is(user1=>user1.UserName==“DummyUser”),It.Is>(y=>y[0]。RoleName==“RoleOne”&&y[1]。RoleName==“RoleTwo”)。返回(user)
它工作起来很有魅力。最后我找到了解决方案,我需要在设置中指定如何平等对待两个列表的标准 我已将代码更改为: mockComponent.Setup(x=>x.UpdateUserRoles(It.Is(user1=>user1.UserName==“DummyUser”),It.Is>(y=>y[0]。RoleName==“RoleOne”&&y[1]。RoleName==“RoleTwo”)。返回(user) 它很有魅力