У меня проблемы с моими тестами angular.io с жасмином (v2.99).Я создал spyObject для углового сервиса и высмеял некоторые функции.Сработало как положено.Теперь я хочу вызвать оригинальную функцию (не макет) в том же сервисе.Эта функция возвращает обещание.
Я видел, что это делается с помощью callThrough () в jasmine.Итак, вот что я сделал.И это работает до определенной степени;)
describe('Component2Test',()=>{
let component: Component2Test;
let fixture: ComponentFixture<Component2Test>;
let dataServiceSpy: jasmine.SpyObj<DataService>;
beforeEach(() => {
const dataSrvSpy = jasmine.createSpyObj('DataService', ['getUserObject',
'getLocalStorageObject','getAllLocalStorageKeys','setLocalStorageObject']);
dataSrvSpy.getUserObject.and.returnValue(tua);
dataSrvSpy.getAllLocalStorageKeys.and.returnValue(Promise.resolve(localStorageData));
dataSrvSpy.setLocalStorageObject.and.callThrough(); <--- ?????
}
TestBed.configureTestingModule({
imports: [],
declarations: [Component2Test],
providers: [
{provide: DataService, useValue: dataSrvSpy},
]
});
dataServiceSpy = TestBed.get(DataService);
fixture = TestBed.createComponent(Component2Test);
component = fixture.componentInstance;
});
test
fit('should set data in localStorage', fakeAsync(() => {
dataServiceSpy.setLocalStorageObject(foundData[foundDataKeys[1]],foundDataKeys[1]).then();
});
Хотя вызывается исходная функция, и я вижу, что данные записаны так, как я ожидал.К сожалению, Жасмин вернулась с этим сообщением об ошибке
TypeError: Cannot read property 'then' of undefined
оригинальная функция в сервисе
setLocalStorageObject(o:object,key:string):Promise<boolean>{
return new Promise((resolve,reject)=>{
this._lclStrgSrv4User.storeJsonDataInLocalStorage(o,key).then((resp)=>{
resolve(resp);
},(err)=>{
reject(err)
});
})
}
Итак, мой вопрос:
Как правильно определить callThrough ()?
Заранее спасибо, Том