TestScheduler.RunTo не обновляет свойство Now - PullRequest
1 голос
/ 12 марта 2011

Я реализую класс Cache, который зависит от IScheduler и имеет свойство

public bool IsValid
{
    get { return scheduler.Now - lastUpdate < timeout; }
}

Для тестирования я хотел использовать TestScheduler, но этот метод RunTo не ведет себя так, как яожидайте:

var scheduler = new TestScheduler();
scheduler.RunTo(100);
scheduler.Ticks.Should().Be(100);  // Fails, actual value is 0

Это ошибка?

Ответы [ 2 ]

4 голосов
/ 12 марта 2011

TestScheduler будет работать до последнего запланированного действия, а не до времени выполнения.

Итак, используя пример:

var a = 1;
var scheduler = new TestScheduler();
scheduler.Schedule(() => a++, TimeSpan.FromTicks(50));
scheduler.RunTo(100);

scheduler.Ticks будет равно 50.

var a = 1;
var scheduler = new TestScheduler();
scheduler.Schedule(() => a++, TimeSpan.FromTicks(50));
scheduler.Schedule(() => a++, TimeSpan.FromTicks(70));
scheduler.RunTo(100);

scheduler.Ticks будет равно 70.

Я полагаю, что это не должно тратить циклы на обработку часов вплоть до RunTo, так как для него ничего не запланировано.

2 голосов
/ 16 марта 2011
...