我有一个如下所示的方法:
export async function getResources<T>(numResources: number, provisionOperation: Function) {
...
const tasks: (() => Promise<T>)[] = [];
for (let i = 0; i < numResources; i++) {
tasks.push(async () => {
try {
const result: T = await getResource<T>(
context,
resourceType,
serviceConfig,
provisionOperation
);
return result;
} catch (err) {
log.error(err);
return null;
}
});
}
const runningTasks = tasks.map(task => task());
const results = await Promise.all(runningTasks);
return results;
}
如您所见,有一个“任务队列”,我从该队列中排队一个异步函数,以在我的模块中调用另一个函数(这不在类内,而是在模块内)。
在茉莉花测试中,我试图验证该函数被调用numResources
次。
fit('works', (done: DoneFn) => {
...
spyOn(resourceManager, 'getResource').and.callThrough();
resourceManager.getResources(
1,
eventHubResourceManagerProvisionSpy
).then((resp: any) => {
expect(resourceManager.getResource).toHaveBeenCalledTimes(1);
expect(resp.length).toEqual(1);
done();
}).catch((err: any) => {
fail(err);
});
});
});
测试一直失败,因为它说resourceManager.getResource
被调用了0次。但是,我逐步调试了一下调试器,可以看到该函数正在执行并被很好地调用。 resp
包含我期望的回复。为什么计数错误?