Я пытался использовать Moq, чтобы подделать набор объектов (и получить) с несколькими индексаторами.Ранее я уже довольно давно использовал Moq с отдельными индексаторами, но, похоже, он не работает с несколькими индексаторами.Из моего исследования мне известно, что в Moq могут возникнуть проблемы с использованием It.IsAny <> для параметров индексатора, но я также пробовал следующий код с конкретными параметрами (например, mock [1, "BlockItem"]). Вот мой код:
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: значение не может быть нулевым.Имя параметра: arguments.
System.Linq.Expressions.Expression.ValidateArgumentTypes (метод MethodInfo, ReadOnlyCollection 1& arguments)
System.Linq.Expressions.Expression.ValidateCallArgs(Expression
instance, MethodInfo method, ReadOnlyCollection
1 & arguments) System.Linq.Expressions.Expression.Call (экземпляр выражения, метод MethodInfo, метод IEnumerable 1 arguments)
System.Linq.Expressions.Expression.Call(Expression instance,
MethodInfo method, Expression[] arguments) TCall](Mock
1 mock, Action 1 setterExpression, Func
5 callFactory) b__25 () Moq.PexProtector.Invoke [T] (Func 1 function)
Moq.Mock.SetupSet[T](Mock
1 mock, условие Action 1 setterExpression, Func
1) SetupSet (Action`1 setterExpression) UnitTest.BonusHandlerTest.SetupPersistence () в C: \ Perforce \ dev \ KHIRST_Client12.BonusHandler \ Client12 \ Gaming \ BonusHandler \ UnitTest \ BonusHandlerTest.cs: строка 868 UnitTest.BonusHandlerTest.MyTestInitialize () в C: \ Perforce \ dev \ KHIRST_Candler12:BonusHandler \ UnitTest \ BonusHandlerTest.cs: строка 100
На основании того, что я пробовал, кажется, что Moq не может выполнять индексирование с несколькими параметрами.У кого-нибудь есть идеи?Межплетение не очень помогло.