gpt4 book ai didi

javascript - 我如何让 TestScheduler 在 RxJs5 中打勾?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:55:31 25 4
gpt4 key购买 nike

我正在尝试在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com