TestScheduler.RunTo不更新Now属性

时间:2011-03-12 07:44:23

标签: unit-testing system.reactive

我正在实施一个取决于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 个答案:

答案 0 :(得分:4)

TestScheduler将一直运行到最后一次计划的操作,而不是一直到RunTo时间。

所以使用示例:

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,因为没有任何计划执行它。

答案 1 :(得分:2)

Wes confirms on Rx MSDN forum这是一个错误