在 Angular 测试中模拟 Websocket 主题

秃头Win03

有没有办法在 Angular 中正确地模拟来自 Rxjs 的 websocket 主题?

我有以下服务,它注入了几个组件:

import {Injectable} from '@angular/core';
import {webSocket} from "rxjs/webSocket";

@Injectable({
  providedIn: 'root'
})
export class WebsocketApi {
  public websocketSubject = webSocket("ws://localhost:8080");

  constructor() {
    this.subject.subscribe(
      event => { // do stuff with the event }
    );
  }
}

有没有一种方法可以轻松地在我的 WebsocketApi 规范文件或其他地方模拟主题?

谢谢。

撒旦时间

您需要注入webSocket而不是直接在类中声明它,然后您可以模拟它。


export const WEB_SOCKET = new InjectionToken('WEB_SOCKET');

@NgModule({
  providers: [
    WebsocketApi,
    {
      provide: WEB_SOCKET,
      useFactory: () => webSocket("ws://localhost:8080"),
    },
  ],
})
export class WebSocketModule {}

@Injectable({
  providedIn: 'root'
})
export class WebsocketApi {
  constructor(@Inject(WEB_SOCKET) public websocketSubject) {
    this.subject.subscribe(
      event => { // do stuff with the event }
    );
  }
}

现在在测试中,您可以WEB_SOCKET用模拟副本替换。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章