我在为包含以下组合的可观察对象编写单元测试时遇到问题:
Return
和
Delay
. 问题是
TestScheduler
无论提前多少时间,都不会发出任何通知。
var scheduler = new TestScheduler();
var input = new Subject<bool>();
var output = scheduler.Start(() =>
Observable.Return("feed me", scheduler)
.Delay(TimeSpan.FromSeconds(1), scheduler));
scheduler.AdvanceBy(1);
Assert.Equal(0, output.Messages.Count);
scheduler.AdvanceBy(TimeSpan.FromSeconds(2).Ticks);
Assert.Equal(2, output.Messages.Count);
created
subscribed
和
disposed
计时到
Start
方法它确实有效。这一切都很好,但我真的需要AdvanceBy功能。我的实际测试用例更复杂,需要手动计时可观察对象的输入。
var scheduler = new TestScheduler();
var source = Observable
.Return("Winner!", scheduler)
.Delay(TimeSpan.FromSeconds(1), scheduler);
var output = scheduler.Start(() => source,
0,
0,
TimeSpan.FromSeconds(5).Ticks);
Assert.Equal(2, output.Messages.Count);