我正在使用 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/