Я не могу подписаться на наблюдаемую, не могу покрыть подписку в модульном тестировании кармы, когда подписка успешна или неудачна.
Компонент:
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' }});
});
Невозможно подписать / скрыть код в модуле кармы, проверяющий успешную или неудачную подписку наблюдаемого