作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试在 RxJs 版本 5 中使用 Observable.interval
编写示例单元测试。我正在运行以下代码,但我的 observable 只触发一次,而不是预期的 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 毫秒?
最佳答案
我的理解是 TestScheduler
旨在与 marble testing 一起使用并使用由其 createColdObservable
返回的那些组成的可观察量和 createHotObservable
方法。
相反,您可以使用 VirtualTimeScheduler
- TestScheduler
基于:
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);
.as-console-wrapper { max-height: 100% !important; top: 0; }
<script src="https://unpkg.com/rxjs@5/bundles/Rx.min.js"></script>
请注意,只需要一次 flush
调用。
关于javascript - 我如何让 TestScheduler 在 RxJs5 中打勾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45362083/
我是一名优秀的程序员,十分优秀!