2011-10-24 2 views
3

저는 Moq를 사용하여 여러 인덱서로 개체 집합을 가짜로 만들려고했습니다. 이전에 Moq를 단일 인덱서로 오랫동안 사용했지만 여러 인덱서를 사용하여 작동하지 않는 것 같습니다. 내 연구에서 Moq가 인덱서 매개 변수에 대해 It.IsAny <>을 사용하는 데 문제가있을 수 있음을 알고 있지만 mock [1, "BlockItem"]과 같은 특정 매개 변수로 다음 코드를 시도했습니다. 내 코드는 다음과 같습니다.Moq에서 여러 인덱서 사용

m_storageAccessor.SetupSet(
mock => mock[It.IsAny<int>(), It.IsAny<string>()] = It.IsAny<object>()).Callback(
       (int i, string s, object o) => 
         { 
          m_storageAccessor.SetupGet(
           mock => mock[i, s]).Returns(
            () => { return o; }); 
         }); 

이렇게하면 SetupSet()에서 인덱서 기능을 제공하는 매개 변수에 관계없이 다음 예외가 다시 발생합니다.

초기화 방법 UnitTest.BonusHandlerTest.MyTestInitialize 던져 예외. System.ArgumentNullException : System.ArgumentNullException : 값을 null 일 수 없습니다. 매개 변수 이름 : 인수

System.Linq.Expressions.Expression.ValidateArgumentTypes (MethodInfo 방법 ReadOnlyCollection 1& arguments) System.Linq.Expressions.Expression.ValidateCallArgs(Expression instance, MethodInfo method, ReadOnlyCollection 1 & 인수) System.Linq.Expressions.Expression.Call (식 인스턴스 MethodInfo 방법을 IEnumerable 1 arguments) System.Linq.Expressions.Expression.Call(Expression instance, MethodInfo method, Expression[] arguments) TCall](Mock 1 모의, 액션 1 setterExpression, Func 5 callFactory) b__25() Moq.PexProtector.Invoke [T] (Func을 1 function) Moq.Mock.SetupSet[T](Mock 1 모의, 액션 1 setterExpression, Func 조건 1) SetupSet (Action`1 setterExpression) UnitTest.BonusHandlerTest.SetupPersistence()에 C : \ 퍼포 \ DEV \ KHIRST_Client12.BonusHandler \ Client12 \ Gami NG \ BonusHandler \ 유닛 테스트 \의 BonusHandlerTest.cs : 라인 C 868 UnitTest.BonusHandlerTest.MyTestInitialize() : \ 퍼포 \ DEV \ KHIRST_Client12.BonusHandler Client12 \ 게임 \ BonusHandler \ 유닛 테스트 \ BonusHandlerTest.cs \ 라인 100

Moq이 여러 매개 변수를 사용하여 인덱서를 수행 할 수 없다고 거의 대부분 비슷하게 보입니다. 누구든지 아이디어가 있습니까? interwebs는별로 도움이되지 않았습니다. 그것은 가치가 무엇인지에 대한

답변

2

, 나는이 시나리오를 설정하고 예외가 없었다 :

 var myStub = new Mock<Foo>(); 
     myStub.SetupSet(foo => foo[12, "asdf"] = null).Callback((int i, string s, object o) => myStub.SetupGet(foo => foo[i, s]).Returns(o)); 

뿐만 아니라 It.IsAny <처럼 않는 것 같습니다> 인덱서에 매개 변수가 있지만, 또한 설정 값까지. 필자는 테스트에서이 작업을 시도한 적이 없지만이 도구의 현재 제한 사항 인 것 같습니다.

+0

고마워, 에릭, 그것을 확인해 주셔서 감사합니다. 이것에 대한 구식 테스트 구성 요소와 함께 가야 할 것처럼 보입니다. –