У меня есть интерфейс ILogger
, который имеет свойство LocalTime
, на которое можно было бы добавить время с AddToTime
. Для того, чтобы дразнить его соответствующим образом, я попытался следующие:Как сохранить значение, чтобы вернуть его позже?
int ltime = 0;
var mlog = new Mock<ILogger>();
mlog.Setup(l => l.AddToTime(It.IsAny<int>())).Callback((int s) => {ltime +=s;});
mlog.Setup(l => l.LocalTime).Returns(ltime);
Хотя он компилирует, я не работает: Наверное, потому, что Returns
оценивает выражение ltime
в начале и так всегда возвращает 0
. Любые предложения о том, как можно добиться отступов?
Edit: мне это нужно, чтобы проверить его с петлей вида:
while (log.LocalTime < 1000)
{
log.AddToTime(500);
....
}
Как я использую время для целей лесозаготовок, он не может просто заменить петлю с локальным переменным. Если AddToTime
ничего не делает, цикл не может быть правильно протестирован.
Показать нам «действовать» –
Почему бы не сделать это окурок? Я не помню правильную документацию о том, как настроить заглушку в Moq, но я знаю, что вы можете это сделать. Вы пробовали этот подход? –
Итак, у вас есть жестко закодированные 1000 и 500 в вашем SUT? И можете ли вы описать требования к этому коду? Также вы можете изменить «Logger» или нет? –