По моим личным причинам я хотел бы знать, какая строка в настоящее время обрабатывается при запуске процесса шутки (или узла).
До сих пор мои попытки вращались вокруг throw new Error().stack
, но это ограничено для асинхронных операций (т.е. после того, как тик пройден, кажется, что он застрял на at processTicksAndRejections (internal/process/task_queues.js:86:5)
).
Я знаю, например, что expect
позволяет расширить возможности и получить доступ к файлу конфигурации, который содержит некоторые метаданные, такие как имя файла, запущенного в данный момент.
Для синхронных операций это работает нормально, и я могу проанализировать стек и найти текущую строку, если я вызову мои расширенные операции.
Это прекрасно работает для синхронных тестов:
# extendExpect.ts
expect.extend({
getProgress(obj: any) {
const stack = new Error().stack;
// Do something with stack, report progress, etc
}
}
# __tests__/someTest.ts
test("progress testing", () => {
// do stuff
expect({}).getProgress()
// do more stuff
expect({}).getProgress()
});
При работе с асинхронными функциями / тестами трассировка стека заканчивается на at processTicksAndRejections (internal/process/task_queues.js:81:17)
.
Я пока не могу найти способ обойти это, буду признателен за любые мысли / советы.
Спасибо!