我应该为与RxJS的简单交互编写单元测试

时间:2019-03-28 15:59:29

标签: angular typescript unit-testing rxjs

假设我们有一个简单的类,它在window.resize事件上向RxJS主题发出新事件。不用理会它太复杂了。关键是此类会发出一些事件。

        export class ResizeService {
          private resizeSubject = new Subject();

          public onResize(): Observable<Window> {
            return this.resizeSubject.asObservable();
          }

          constructor(private eventManager: EventManager) {
            this.eventManager.addGlobalEventListener('window', 'resize', (e) => {
              this.resizeObject.next(<Window>event.target)   
            })
          }

          private onResize(event: UIEvent) {
            this.resizeObject.next(<Window>event.target);
          }
        }

问题是,就该类的单元测试而言,我们是否应该检查客户端发送给RxJS主题的​​新事件实际上是否将被客户端接收,即方法onResize。像这样:

it('should emit a value', fakeAsync(() => {
     let subscriptionWorks = false;
     fireWindowResizeEvent(new Event({width: 600; height: 400});
     resizeService.onResize().subscribe(() => subscriptionWorks = true);
     expect(subscriptionWorks).toBeTruthy();
  })
)

然后如果某些开发人员将onResizeMethod更改为此,则测试将失败:

public onResize(): Observable<Window> {
  return this.resizeSubject.asObservable().skip(10);
}

1 个答案:

答案 0 :(得分:0)

我认为您所描述的实际上是ResizeService与客户端之间的集成测试。所以不,你不会。无需对该单元进行测试。