Как заставить Mock возвращать новый список каждый раз, когда метод вызывается с использованием Moq

Я использую MOQ для имитации вызов метода с ожидаемым списком возврата. Мой метод возвращает список, но я хочу, чтобы макет создавал новый список каждый раз, когда вызывается метод. То, что я сделал до сих пор:

List<Correlation> expected = new List<Correlation> { new Correlation() { Code = "SelfError1" }, new Correlation() { Code = "SelfError2" } };
Mock<IRPLValidator> selfMock = new Mock<IRPLValidator>();
selfMock.Setup(f => f.Validate()).Returns(expected);

Я пытаюсь сделать макет возвращать новый список каждый раз, когда вызывается метод.Я пробовал это, но не сработало:

selfMock.Setup(f => f.Validate()).Returns(new List<Correlation>{ new Correlation() { Code = "SelfError1" }, new Correlation() { Code = "SelfError2" } });

Поскольку это не сработало, я думаю, что, возможно, обратный вызов - это ответ на мой вопрос, но я не нашел подходящего примера для повторной инициализации моего списка. {{1 }} Есть предложения?

Как вы, возможно, спросите, зачем мне каждый раз нужен новый список, проблема в том, что я вызываю метод для разных типов объектов, внося некоторые изменения в список, в зависимости от типа объекта. Поскольку макет дает мне один и тот же список каждый раз, когда вызывается метод, я всегда изменяю один и тот же объект в памяти, поэтому я не могу отслеживать изменения, которые я в нем делаю.

Заранее спасибо!

14
задан Florin Bombeanu 8 November 2011 в 14:15
поделиться