Получение ошибки при модульном тестировании в angular: - «TypeError: Недопустимый конструктор в новом SignalrWindow» - PullRequest
0 голосов
/ 21 декабря 2018

Я использовал 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);
            });
    }
}
...