У меня есть метод, который возвращает разрешенное обещание. Проблема, с которой я сталкиваюсь, заключается в том, как проверить разрешение этого обещания.
По сути, я обновляю свой документ через цепочку других функций, и когда этот документ сохраняется, я хочу показать предупреждение. Прямо сейчас я не могу проверить свое разрешение. На данный момент оповещение никогда не вызывается.
Я хотел бы использовать собственные обещания, а не другие библиотеки, если это возможно. Как бы я протестировал вещи, чтобы я мог убедиться, что мой метод оповещения вызывается.
public update(doc):Promise<any> {
return collection.doc(doc.id).update(doc).then(res=>{
console.log('This is never run')
this.alert.insert({type:"success", message:"Updated"})
})
.catch(err=>{
console.log('Neither is this')
this.alert.insert({type:"error", message:`Error - Updating ${err}`})
})
}
// мой тест
beforeEach(() => {
afSpy = jasmine.createSpyObj('AngularFirestore', ['collection',
'valueChanges', 'snapshotChanges', 'ref', 'doc','add','update',
'then', 'catch', 'finally', 'firestore', 'batch']);
afSpy.collection.and.returnValue(afSpy);
afSpy.valueChanges.and.returnValue(afSpy);
afSpy.snapshotChanges.and.returnValue(afSpy);
afSpy.ref.and.returnValue(afSpy);
afSpy.doc.and.returnValue(afSpy);
afSpy.add.and.returnValue(afSpy);
afSpy.update.and.returnValue(afSpy);
afSpy.then.and.returnValue(Promise.resolve('hello world'));
afSpy.catch.and.returnValue(afSpy);
afSpy.finally.and.callThrough()
afSpy.firestore.and.returnValue(afSpy);
afSpy.batch.and.returnValue(afSpy);
TestBed.configureTestingModule({
providers:[
{ provide: AngularFirestore, useValue: afSpy },
],
})
fit('temporary test', (done) => {
service.update(mockDoc).then(x=>{
expect(updateSpy).toHaveBeenCalledWith(mockDoc); //this passes
console.log(x)
expect(alertServiceSpy.insert).toHaveBeenCalled() // this fails
done();
})
});