有没有办法在 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] 删除。
我来说两句