Получение номера строки во время теста в jest / node (во время асинхронных вызовов) - PullRequest
0 голосов
/ 29 апреля 2019

По моим личным причинам я хотел бы знать, какая строка в настоящее время обрабатывается при запуске процесса шутки (или узла). До сих пор мои попытки вращались вокруг 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).

Я пока не могу найти способ обойти это, буду признателен за любые мысли / советы.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...