В модульном тестировании Karma, как подписаться на Observable и проверить, успешна ли подписка или нет - PullRequest
0 голосов
/ 20 июня 2019

Я не могу подписаться на наблюдаемую, не могу покрыть подписку в модульном тестировании кармы, когда подписка успешна или неудачна.

Компонент:

upload() {
    this.Service.importFile({
      data: {
        body: this.selectedFile,
        sendFormData: true
      },
      success: (result) => {
        this.records = result;
      },
      failure: (error) => {
}
});
}

сервис

importFile() {
      const defaults = {
        url: this.ajaxCall.actionUrls().upload,
        type: 'POST'
      };
      return this.ajaxCall.httpCall(defaults);
    }

ajaxCall

httpCall(request) {
let httpCall = this.handleRequest(request).subscribe(
    result => {
      if (request.success)
        request.success(result);
    if (request.onComplete)
        request.onComplete(true);
    }, (err: Response) => {
      if (request.failure) {
        request.failure(errorObj.message);
    }
    if (request.error) {
        request.error(errorObj.message);
    }
    if (request.onComplete)
        request.onComplete(true);
    }
    });
}

public handleRequest(request): Observable<any> {
return //altered request;
}

Модульное тестирование

it('should call upload', () => {
         const ajax = fixture.debugElement.injector.get(ajaxCall);
        ajax.httpCall({});
        ajax.handleRequest({sendFormData: true})
       spyOn(ajax, 'handleRequest').and.returnValues(of({success: () => {return {sendFormData: true}}}));       
        component.upload({index: 1});
        const service = fixture.debugElement.injector.get(Service);
        spyOn(upload, 'importFile').and.returnValue(
         { success: {message: 'Hello' }});

    });

Невозможно подписать / скрыть код в модуле кармы, проверяющий успешную или неудачную подписку наблюдаемого

...