Я пытаюсь смоделировать имена взаимодействия Excel. Add () Это выглядит так
Name Add(object Name = Type.Missing, object RefersTo = Type.Missing, object Visible = Type.Missing, object MacroType = Type.Missing, object ShortcutKey = Type.Missing, object Category = Type.Missing, object NameLocal = Type.Missing, object RefersToLocal = Type.Missing, object CategoryLocal = Type.Missing, object RefersToR1C1 = Type.Missing, object RefersToR1C1Local = Type.Missing);
Я пытаюсь использовать Callback () для настройки локальных коллекций, чтобы доказать, что Add () был вызван правильно:
names.Setup(n => n.Add(It.IsAny<object>(), It.IsAny<object>(), It.IsAny<object>(), Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing)).Callback(
(object name, object r, object a, object b, object c, object d, object e, object f, object g, object h, object i) =>
{
nameList.Add((string)name);
rangeList.Add(((Microsoft.Office.Interop.Excel.Range)r).Formula);
});
Это нормально работает для "установки", но когда я вызываю его с
var result = names.Add(name, cell, true);
Это вызывает исключение
"Дополнительная информация: отсутствует параметр отсутствуетзначение по умолчанию. "
at System.Reflection.MethodBase.CheckArguments(Object[] parameters, Binder binder, BindingFlags invokeAttr, CultureInfo culture, Signature sig)
at System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Delegate.DynamicInvokeImpl(Object[] args)
at System.Delegate.DynamicInvoke(Object[] args)
at Moq.Extensions.InvokePreserveStack(Delegate del, Object[] args) in C:\projects\moq4\Source\Extensions.cs:line 108
Я пробовал установку с нулями вместо Type.Missing, и это будет работать, но только если я явно использую
var result = names.Add(name, cell, true, null, null, null, null, null, null, null, null);
Но яЯ не хочу менять свой реальный код, как этот, просто для адского модульного теста.
Есть предложения?