.Schedule (DateTimeOffset, Action>) 항목을 사용하여 RX 스케줄러 클래스로 작업하고 있습니다. 기본적으로 나는 다시 일정을 잡을 수있는 예정된 행동을했습니다.Reactive Extensions 테스트 스케줄러 시간 경과 시뮬레이션
코드 : 내 질문 시간을 시뮬레이션 직결되는
public SomeObject(IScheduler sch, Action variableAmountofTime)
{
this.sch = sch;
sch.Schedule(GetNextTime(), (Action<DateTimeOffset> runAgain =>
{
//Something that takes an unknown variable amount of time.
variableAmountofTime();
runAgain(GetNextTime());
});
}
public DateTimeOffset GetNextTime()
{
//Return some time offset based on scheduler's
//current time which is irregular based on other inputs that i have left out.
return this.sch.now.AddMinutes(1);
}
variableAmountofTime 소요 시간 및 예상대로 내 코드가 동작하는지 테스트 만 예상대로 호출 트리거 수 있습니다.
대리인 내에서 테스트 스케줄러 시간을 연장하려고 시도했지만 작동하지 않습니다. 내가 쓴 그 코드의 예제는 그다지 효과가 없습니다. GetNextTime()이 1 분만 스케쥴하는 것으로 가정합니다.
[Test]
public void TestCallsAppropriateNumberOfTimes()
{
var sch = new TestScheduler();
var timesCalled = 0;
var variableAmountOfTime =() =>
{
sch.AdvanceBy(TimeSpan.FromMinutes(3).Ticks);
timescalled++;
};
var someObject = new SomeObject(sch, variableAmountOfTime);
sch.AdvanceTo(TimeSpan.FromMinutes(3).Ticks);
Assert.That(timescalled, Is.EqualTo(1));
}
내가 미래에 3 분 가고 걸려 있지만 실행이 3 분 거리에 있기 때문에, 나는 3 번 트리거이 유일한 트리거 1 time..instead을보고 싶어요.
테스트 스케줄러를 사용하여 실행하는 동안 시간을 어떻게 시뮬레이트 할 수 있습니까?
감사합니다. Bart! 나는 그 반응에 감사한다. –