2013-07-17 5 views
0

나는 다음과 같은 방법의 서명이 보인다, 두 개의 매개 변수를 사용하는 방법을 조롱하려고를 사용하여 목록 paratemeter을 통과 :어떻게 MOQ

사용자 해봐요 (사용자 사용자 목록 newRoleList);

'newRoleList'매개 변수에 somepredefined 역할과 특정 사용자 이름이 들어있는 경우에만이 메소드가 무언가를 반환하도록합니다. 따라서 It.IsAny <을 사용하는 대신 It을 사용하려고합니다. <>. 내가 직면하고있는 문제는 두 번째 매개 변수와 관련이 있습니다.이 두 번째 매개 변수는 어떻게 설정해야합니까?

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>()로 변경하면 적절한 값이 반환됩니다.

이 방법을 제안하십시오. 매개 변수 또는 특정 목록을 제공하는 더 좋은 방법이 있습니까?

답변

0

마지막으로 해결책을 찾았습니다. 설정에서 두 목록을 동일하게 취급하는 방법에 대한 기준을 지정해야합니다.

난에 코드를 변경 :

mockComponent.Setup (X => x.UpdateUserRoles (It.Is (USER1 =>하여 user1.username == "DummyUser") It.Is> (Y = > y [0] .RoleName == "RoleOne"& & [1]. 롤 이름 == "RoleTwo"))).

매력처럼 작동합니다.