等待TestScheduler

问题描述 投票:0回答:1

我正在使用TestScheduler来测试和设计我的序列,但是对于下面的代码片段,TestScheduler挂起,而DefaultScheduler工作正常。在某些情况下可能会删除等待,但由于显而易见的原因,这不是我想要的。那么有没有办法使用TestScheduler并一起等待?

var testScheduler = new TestScheduler();
var response = await Observable.Return(Unit.Default).Delay(TimeSpan.FromTicks(1000),testScheduler);
testScheduler.AdvanceBy(1000);
response.ShouldNotBeNull();
c# system.reactive
1个回答
1
投票

你的例子永远不会与TestScheduler完成,因为await性质。程序将在await语句处停止并等待您的observable返回值。但是它永远不会返回,因为您需要通过调用AdvanceBy函数来移动测试调度程序,并且在阻塞await之后调用。

如果您等待,那么它将永远不会进一步移动您的调度程序。我会在这里删除async / await并去订阅。其次,您需要使用相同的TestScheduler实例。

            var ts = new TestScheduler();
            System.Reactive.Unit resp = null;

            var obs = Observable.Return(System.Reactive.Unit.Default).Delay(TimeSpan.FromTicks(1000),ts).Subscribe(r => { resp = r; });
            ts.AdvanceBy(1000);
            resp.ShouldNotBeNull();
© www.soinside.com 2019 - 2024. All rights reserved.