Jasmine:在嵌套函数中使用spyOn(用于AngularFirestore)



我是这样模拟AngularFirestore的:

beforeEach(() => {
TestBed.configureTestingModule({
{
providers: [
{
provide: AngularFirestore,
useValue: {
collection: () => ({
doc: () => ({
set: () => new Promise((resolve) => resolve(void 0))})
})
}
}
}
]
}
})
})

collection()返回一个包含doc属性的对象。collection().doc()返回一个包含set属性的函数。collection().doc().set()返回void Promise

如何使用spyOn监视对set的调用?

spyOn允许您监视一个对象所拥有的一个属性。你必须:

  1. 自己构建间谍目标
  2. 基于#1构建Jasmine间谍对象
  3. 嵌入#1到模拟的Firestore

:

let firestoreSpy: jasmine.Spy;
beforeEach(() => {
const firestoreGet = {
set: () => new Promise((resolve) => resolve(void 0))
};
firestoreSpy = spyOn(firestoreGet, 'set');
TestBed.configureTestingModule({
{
providers: [
{
provide: AngularFirestore,
useValue: {
collection: () => ({
doc: () => firestoreGet
}
}
}
]
}
})
})
it('mister it', () => expect(firestoreSpy.[what have you]).[to be whatever]);

相关内容

  • 没有找到相关文章

最新更新