C Pottinger Ответов: 1

Get MOQ для возврата последовательных символов из строки


Привет, гуру.

Я уверен, что многие из вас думали: "слава богу, что этот парень исчез", но я здесь, чтобы разочаровать вас.

На этот раз мой вопрос об использовании Moq с C# для создания макета, который будет возвращать каждую букву предоставленной строки каждый раз, когда она вызывается. Упрощенный пример того, что я хочу, это:
var sourceText = "abcdefg";
var myMock = new Mock<IThingy>():
myMock.Setup((mm) => mm.NextChar()).Returns(() => { =some code= });

var result = myMock.NextChar(); // should return "a";
result = myMock.NextChar(); // should return "b";
...


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

Что я уже пробовал:

Я попробовал использовать доходность возврат, но уступать недопустимо в анонимном методе.
Я попытался настроить метод, который использует доходность возврат, и это будет называться =некоторый код=, но этот метод должен был бы вернуть IEnumerable<string> какие средства =некоторый код= возвращает коллекцию, а не один последовательный символ каждый раз.

1 Ответов

Рейтинг:
12

F-ES Sitecore

var sourceText = "abcdefg";
var index = 0;
var myMock = new Mock<IThingy>();
myMock.Setup(m => m.NextChar()).Returns(() => sourceText[index++]);

var result = myMock.Object.NextChar(); // returns "a";
result = myMock.Object.NextChar(); // returns "b";