Я не совсем уверен, что понимаю, что вы имеете в виду, код, который вы предоставили, всегда будет неудачным.Однако, если вы хотите сказать, что хотите вернуть true в секунду раз, когда он вызывается, это можно сделать.Есть несколько разных способов, о которых я могу подумать, два из них:
A.CallTo(() => enumerator.MoveNext()).ReturnsNextFromSequence(false, true);
Другой способ:
A.CallTo(() => enumerator.MoveNext()).Returns(true);
A.CallTo(() => enumerator.MoveNext()).Returns(false).Once();
Редактировать:
Во-вторых, хотя, я думаю, я понимаю ваш вопрос лучше, что вы хотите, чтобы MoveNext возвращал true в первый раз и false во второй раз?Если это так, просто измените порядок значений в приведенных выше примерах.
FakeItEasy не использует модель записи / воспроизведения, и вы правы в том, что последнее настроенное правило имеет приоритет над любыми ранее указанными правилами.Вот почему вы должны указать repeat - ".Once ()" - в последней конфигурации, чтобы она действовала только один раз.
Существует множество причин, по которым последняя имеет приоритет, одна из самых важных -то, что он позволяет вам установить возвращаемое значение по умолчанию в настройках вашего прибора и переопределить его, чтобы возвращать определенные значения в некоторых ваших тестах, это невозможно при использовании модели записи / воспроизведения.