Я пытаюсь преобразовать вспомогательный метод, который я написал, mocking ILogger
с использованием Moq для FakeItEasy. Метод Log()
, смоделированный в ILogger
, требует 5 аргументов.
Log(LogLevel, EventId, FormattedLogValues, Exception, Func<object, Exception, string>)
Похоже, что FakeItEasy ограничил число аргументов до 4. (Из документов ):
// Pass up to 4 original call argument values into the method that creates the exception.
A.CallTo(()=>fakeShop.NumberOfSweetsSoldOn(A<DateTime>._))
.Invokes((DateTime when) => System.Console.Out.WriteLine("showing sweet sales for " + when))
.Returns(17);
Поэтому, когда я пишу этот код ...
var logs = new List<string>();
var logger = A.Fake<ILogger<ElasticSearchRepository>>();
A.CallTo(() => logger.Log(A<LogLevel>._, A<EventId>._, A<FormattedLogValues>._, A<Exception>._, A<Func<object, Exception, string>>._))
.Invokes((LogLevel a, EventId b, FormattedLogValues x, Exception c, Func<object, Exception, string> d) => logs.Add(x.ToString()));
... Я получаю следующую ошибку
Delegate 'Action<IFakeObjectCall>' does not take 5 arguments
Есть ли что-то, что я должен делать по-другому? Трудно представить, чтобы кто-то произвольно выбрал 4 в качестве максимального аргумента, который можно передать, поэтому я предполагаю, что есть причина. Moq's Callback()
не имеет таких же ограничений.