Мне тоже нужно было то же самое, и в итоге я написал этот метод расширения, который работает для меня:
public static class MoqExtensions {
public static void Returns<TMock,TResult>(this ISetup<TMock, TResult> source, params TResult[] results) where TMock : class {
int currentResultIndex = 0;
source.Returns (() => {
if(currentResultIndex >= results.Length) {
currentResultIndex = 0;
}
return results [currentResultIndex++];
});
}
}
И пример использования:
someMock.Setup(o => o.AMethodWithReturnTypeInt()).Returns(1, 2, 3, 4);
Для этого примера, если вы вызовете метод-заглушку, скажем, 6 раз, он вернет 1, 2, 3, 4, 1, 2 соответственно.
Надеюсь, это поможет ...