2013-07-17 5 views
0

Я пытаюсь издеваться метод, который принимает два параметра, подпись метода выглядит следующим образом:Как передать список paratemeter с помощью Moq

пользователя (пользователь Пользователь, список newRoleList) DoSomething;

Я хочу, чтобы этот метод возвращал что-то, только если параметры '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); 

Но это всегда возвращается «пустой». Если я изменю второй параметр на It.IsAny>(), тогда он вернет мне правильное значение.

Просьба предложить, как добиться этого, есть ли лучший способ для предоставления определенного списка в качестве параметра или что?

ответ

0

Наконец-то я нашел решение, мне нужно указать в моей настройке критерии для того, чтобы относиться к двум спискам равным.

Я изменил код:

mockComponent.Setup (х => x.UpdateUserRoles (It.Is (user1 => user1.UserName == "DummyUser"), It.Is> (у = > y [0] .RoleName == "RoleOne" & & y [1] .RoleName == "RoleTwo"))). Возвращает (пользователь);

Это работает как шарм.