【问题标题】:How to test RxJs WebSocket in Jasmine如何在 Jasmine 中测试 RxJs WebSocket
【发布时间】:2020-07-07 11:09:50
【问题描述】:

有一个服务可以管理 WebSocket 消息,我需要在没有 TypeScript 解决方法的情况下对其进行测试(websocket 是一个私有属性,因此没有人能够直接访问 websocket)。

Socket 连接是使用 RxJs 中的 WebSocket 建立的。

this.socket = new WebSocket(uri);.

如何测试我的服务逻辑是否适用于套接字?

【问题讨论】:

    标签: angular rxjs jasmine karma-jasmine


    【解决方案1】:

    由于 RxJs 在内部使用 WebSocket,这是一个很容易在下一个方式中模拟的函数

    const mockSocket: WebSocket = {
      send: createSpy('WebSocket#send'),
    } as any;
    
    spyOn(window, 'WebSocket').and.returnValue(
      mockSocket
    );
    

    现在要测试套接字处理的逻辑,只需调用由 RxJs 建立的回调。

    (内部测试fakeAsync

    service.sendLargeString('string').subscribe();
    tick(10);
    
    // Mock socket opening event
    mockSocket.onopen({} as any);
    
    // Some expectations towards "send" messages
    expect(mockSocket.send).toHaveBeenCalledWith('send');
    tick(10);
    
    // Mock socket closing event
    mockSocket.onclose({} as any);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 2019-09-13
      • 2022-01-13
      • 2015-10-21
      • 2019-10-13
      • 2016-09-14
      • 1970-01-01
      相关资源
      最近更新 更多