Используя NUnit и Moq, я пытаюсь обернуть некоторые тесты вокруг унаследованного кода, прежде чем делать слишком много рефакторинга. Мне нужно проверить, что метод продолжает работать до тех пор, пока не будет приказано остановиться. Вот моя идея, как это сделать:
[TestCase]
public void KeepsCallingDoSomethingUntilShouldIKeepGoingIsFalse()
{
var dal = new Mock<IDataAccessLayer>();
var sut = new MyService(dal.Object);
int numberOfTimesToReturnTrue = 5;
dal.Setup(x => x.ShouldIKeepGoing())
.Callback(() => numberOfTimesToReturnTrue--)
.Returns(() => numberOfTimesToReturnTrue >= 0);
sut.Blah();
dal.Verify(x => x.DoSomething(), Times.Exactly(5));
}
Трудно ли понять этот тест? Это действительный / чистый способ сделать это? Есть ли способ лучше? Что-то в написании теста таким образом меня беспокоит.