如何使用Moq传递List paratemeter

时间:2013-07-17 09:57:15

标签: moq-3

我试图模拟一个带有两个参数的方法,方法的签名如下:

用户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;(),那么它会返回一个正确的值。

请建议如何实现这一点,有没有更好的方法来提供特定列表作为参数或什么?

1 个答案:

答案 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”)))。返回(用户);

它的工作就像一个魅力..