我试图在RxJs版本5中使用Observable.interval
编写样本单元测试。我运行以下代码,但我的观察结果只触发一次,而不是预期的20次。
it('does its interval thing synchonously', ()=> {
let x = [];
let scheduler = new Rx.TestScheduler();
let interval$ = Rx.Observable.interval(500, scheduler).take(20);
interval$.subscribe(
value => {
x.push(value);
console.log(value)
},
);
for(let i = 0; i < 20; i++) {
scheduler.flush();
}
expect(x.length).toBe(20);
});
如何让TestScheduler
将Observable向前移动10000毫秒?
答案 0 :(得分:3)
我的理解是,In [246]: n=2
In [247]: df.groupby('univ') \
.apply(lambda x: x.loc[x.ms.shift(n)==1, 'kv'].mean()) \
.reset_index(name='kv')
Out[247]:
univ kv
0 A 0.4
1 B NaN
旨在与marble testing一起使用,并使用由createColdObservable
和createHotObservable
方法返回的可观察对象组成。
相反,您可以使用TestScheduler
所基于的VirtualTimeScheduler
:
TestScheduler
&#13;
let scheduler = new Rx.VirtualTimeScheduler();
let interval$ = Rx.Observable.interval(500, scheduler).take(20);
let values = [];
interval$.subscribe(value => values.push(value));
scheduler.flush();
console.log(values);
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
请注意,只需要进行一次<script src="https://unpkg.com/rxjs@5/bundles/Rx.min.js"></script>
次呼叫。