Javascript 如何测试RxJS事件

Javascript 如何测试RxJS事件,javascript,rxjs,rxjs5,rxjs-dom,Javascript,Rxjs,Rxjs5,Rxjs Dom,我使用Observable.fromEvent()和各种链式操作符处理鼠标悬停事件。我如何进行单元测试呢 export const bindMouseover = (link) => Observable.fromEvent(link, 'mouseover') .filter(event => Nav.hasSubNav(event.target)) .map(event => Nav.getSubNav(event.target)) .filter(

我使用
Observable.fromEvent()
和各种链式操作符处理鼠标悬停事件。我如何进行单元测试呢

export const bindMouseover = (link) => Observable.fromEvent(link, 'mouseover')
    .filter(event => Nav.hasSubNav(event.target))
    .map(event => Nav.getSubNav(event.target))
    .filter(target => !Nav.elementIsVisible(target))
    .subscribe((target) => {
      Nav.hideElements(subNavs);
      Nav.showElement(target);
    });

RxJS 4文档中有一章是关于测试RxJS链的,但这些原则也适用于RxJS 5:

如果您想对RxJS自定义操作符或操作符链进行单元测试,有官方文档(但是,本文档没有告诉您可以在何处导入代码中列出的功能)

另外,看看RxJS本身是如何测试的。例如(顺便说一句,这些是
mocha
tests)。请注意,使用这个简短的符号
Cold('--1--2--3--|')
是如何进行热观测和冷观测的,然后使用

如果您还想将短符号与
cold(…)
hot(…)
和其他符号一起使用,您需要获取源代码,使用
npm run build\u test
编译它,然后使用与原始代码相同的
mocha
选项。和的默认选项。我现在不知道有什么更简单的解决办法

简短的符号只是让事情变得更容易和更可读,但实际上你并不需要它。您已经可以使用常规测试可观察对象(
TestScheduler
ColdObservable
HotObservable
),因为它们是标准
rxjs
包的一部分。(
node_模块/rxjs/testing


另请参见:

嘿!谢谢你的回答!是否有可能以某种方式使rxjs从真实元素事件中工作?我是说。我将在元素中触发一些事件,我希望从
observable.fromEvent
生成的RxJS observable将发出一些数据。有可能吗?