【发布时间】:2011-03-11 18:49:19
【问题描述】:
我有一个测试 BufferWithTime 的单元测试。当在缓冲将发出新值时发出值时,我似乎得到了不一致的结果。
var scheduler = new TestScheduler();
var source = scheduler.CreateColdObservable(
new Recorded<Notification<int>>(50, new Notification<int>.OnNext(1)),
new Recorded<Notification<int>>(100, new Notification<int>.OnNext(2)),
new Recorded<Notification<int>>(150, new Notification<int>.OnNext(3)),
new Recorded<Notification<int>>(200, new Notification<int>.OnNext(4)),
new Recorded<Notification<int>>(250, new Notification<int>.OnNext(5)),
new Recorded<Notification<int>>(300, new Notification<int>.OnNext(6)),
new Recorded<Notification<int>>(350, new Notification<int>.OnNext(7)),
new Recorded<Notification<int>>(400, new Notification<int>.OnNext(8)),
new Recorded<Notification<int>>(450, new Notification<int>.OnNext(9)),
new Recorded<Notification<int>>(450, new Notification<int>.OnCompleted()));
var results = scheduler.Run(() => source
.BufferWithTime(TimeSpan.FromTicks(150), scheduler));
我从中得到的结果基本上是:
results[0] = [1,2]
results[1] = [3,4,5,6]
results[2] = [7,8,9]
我的问题是,为什么第一个缓冲区只有两个项目,而第二个缓冲区只有 4 个?我希望一个与缓冲同时发射的源应该发生,它们要么总是进入缓冲区,要么总是排队等待下一个缓冲区。我是不是偶然发现了一个错误?
【问题讨论】:
-
听起来这可能与 TestScheduler 将“立即”操作安排为 1-tick 未来操作的方式有关。可能想在论坛上提问 - social.msdn.microsoft.com/Forums/en-US/rx/threads
标签: unit-testing system.reactive