Moq с параметрами Type.Missing - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь смоделировать имена взаимодействия 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);

Но яЯ не хочу менять свой реальный код, как этот, просто для адского модульного теста.

Есть предложения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...