У меня есть метод, который выглядит следующим образом:
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
содержит ответ, который я ожидаю.Почему счет неправильный?