gpt4 book ai didi

javascript - 在 RxJs 中使用 TestScheduler 测试 Subject

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

我正在使用 RxJs 来计算在特定时间窗口内有多少数据包到达。我的代码基本上是这样的:

var packetSubject = new Rx.Subject();
var packetsInWindow = [];

function startMonitoring() {
var subscription = packetSubject
.windowWithTime(1000)
.select(function(window) {
window.toArray().subscribe(function(elements) {
packetsInWindow.push(elements.length);
});
})
.subscribe();
}

function newPacket(packet) {
packetSubject.onNext(packet);
}

如何使用 Rx TestScheduler 对这段代码进行单元测试?我找不到任何合适的例子来测试主题。

最佳答案

看看这个例子:

   var x = 0,
scheduler = new Rx.TestScheduler();

var subject = new Rx.Subject();
subject.throttle(100, scheduler).subscribe(function (value) {
x = value;
});

scheduler.scheduleWithAbsolute(0, function () {
subject.onNext(1);//trigger first event with value 1
});
scheduler.scheduleWithAbsolute(50, function () {
expect(x).toEqual(0);//value hasn't been updated
});
scheduler.scheduleWithAbsolute(200, function () {
expect(x).toEqual(1);//value update after throttle's windowDuration
});

scheduler.start();

https://emmkong.wordpress.com/2015/03/18/how-to-unit-test-rxjs-throttle-with-rx-testscheduler/

关于javascript - 在 RxJs 中使用 TestScheduler 测试 Subject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27172435/

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