我试图模拟一个带有两个参数的方法,方法的签名如下:
用户DoSomething(用户用户,列出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);
但这总是返回'null'。如果我将第二个参数更改为It.IsAny&gt;(),那么它会返回一个正确的值。
请建议如何实现这一点,有没有更好的方法来提供特定列表作为参数或什么?
答案 0 :(得分:0)
最后我找到了解决方案,我需要在我的设置中指定如何处理两个列表的标准。
我已将代码更改为:
mockComponent.Setup(x =&gt; x.UpdateUserRoles(It.Is(user1 =&gt; user1.UserName ==“DummyUser”),It.Is&gt;(y =&gt; y [0] .RoleName == “RoleOne”&amp;&amp; y [1] .RoleName ==“RoleTwo”)))。返回(用户);
它的工作就像一个魅力..