Я использовал signalR в проекте Angular 4.При выполнении модульного теста получается эта ошибка
TypeError: Недопустимый конструктор в новом окне Signalr
Ниже приведен служебный код, который вводится в компонент.
Когда я пытаюсь внедрить ту же службу в компонент во время модульного тестирования, я получаю эту проблему.
Служба
export class SignalRService {
starting$: Observable<any>;
error$: Observable<string>;
refreshData$: Observable<any>;
wideAlert$: Observable<any>;
updatedTime$: Observable<any>;
// These are used to feed the public observables
private startingSubject = new Subject<any>();
private errorSubject = new Subject<any>();
private wideAlertSubject = new Subject<any>();
private refreshDataSubject = new Subject<any>();
private updatedTimeSubject = new Subject<any>();
// These are used to track the internal SignalR state
public hubConnection: any;
public hubProxy: any;
signalrURL = ServiceConfig.URL.signalRURL ;
signalRHubName = ServiceConfig.HUB_NAME.dataHub ;
constructor(@Inject(SignalrWindow) private window: SignalrWindow,
@Inject("channel.config") private channelConfig: ChannelConfig,
private http: Http) {
this.error$ = this.errorSubject.asObservable();
this.starting$ = this.startingSubject.asObservable();
this.refreshData$ = this.refreshDataSubject.asObservable();
this.wideAlert$ = this.wideAlertSubject.asObservable();
this.updatedTime$ = this.updatedTimeSubject.asObservable() ;
this.hubConnection = this.window.$.hubConnection();
this.hubConnection.url = this.signalrURL ;
this.hubProxy = this.hubConnection.createHubProxy(this.signalRHubName);
//Define handlers for any errors
this.hubConnection.error((error: any) => {
// Push the error on our subject
this.errorSubject.next(error);
});
this.hubProxy.on('BroadcastRefresh',(data) => {
this.refreshDataSubject.next(data);
});
this.hubProxy.on('BroadcastWideAlert', (data) => {
this.wideAlertSubject.next(data);
});
this.hubProxy.on('BroadcastUpdatedTime', (data) => {
this.updatedTimeSubject.next(data);
});
}
start(): void {
this.hubConnection.start()
.done(() => {
this.startingSubject.next();
})
.fail((error: any) => {
this.startingSubject.error(error);
});
}
}