我需要测试一个函数,我需要帮助的唯一测试用例是检查 dataCollection.add()
方法是否已被调用。我认为这里需要一名 spy ,但任何建议都将不胜感激。
这是我需要测试的函数,其中包含dataCollection.add()
方法:
...
constructor(private _firebase: AngularFirestore, private _read: ReadService) {}
createRootCollectionDocument$(collection: string, data: any): Observable<firebase.firestore.DocumentReference> {
const testt = this._firebase.collection(collection);
const dataCollection: AngularFirestoreCollection<any> = this._firebase.collection(collection);
return Observable.from(
dataCollection.add({ ...data }).catch((err: firebase.firestore.FirestoreError) => {
throw err.message;
})
);
}
这是我的测试用例:
...
beforeEach(() => {
service = TestBed.get(CrudService);
}
it('uses the firebase collection.add method', () => {
return service.createRootCollectionDocument$(collectionStub, dataStub).toPromise().then((result) => {
...
})
});
...
提前致谢!
最佳答案
您可以 stub this._firebase.collection
以返回模拟对象,然后查看其 add
函数被调用。
it('uses the firebase collection.add method', () => {
let mockAdder = jasmine.createSpyObj("adder", ["add"]);
jasmine.spyOn(service["_firebase"], "collection").andReturn(mockAdder);
return service.createRootCollectionDocument$(collectionStub, dataStub).toPromise().then((result) => {
expect(mockAdder.add).toHaveBeenCalled();
});
});
关于angular - 如何监视嵌套方法, Jasmine ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49106696/