Как передать список параметров с помощью Moq
Я пытаюсь смоделировать метод, который принимает два параметра, сигнатура метода выглядит следующим образом:
Пользователь 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);
Но это всегда возвращает "ноль". Если я изменяю второй параметр на It.IsAny>(), тогда он возвращает мне правильное значение.
Пожалуйста, предложите, как добиться этого, есть ли лучший способ для предоставления определенного списка в качестве параметра или что?
1 ответ
Наконец, я нашел решение, мне нужно указать в моей настройке критерии для обработки двух списков равными.
Я изменил код на:
mockComponent.Setup (x => x.UpdateUserRoles (It.Is (user1 => user1.UserName == "DummyUser"), It.Is> (y => y [0].RoleName == "RoleOne" && y [ 1].RoleName == "RoleTwo"))) Возвращает (пользователь).
Это работает как шарм..