在玩笑/节点中测试期间获取行号(异步调用期间)

时间:2019-04-29 10:34:28

标签: node.js asynchronous jestjs

出于我个人的原因,我想知道在运行一个笑话(或节点)进程时当前正在处理哪一行。 到目前为止,我的尝试都是围绕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)结尾。

到目前为止,我仍未找到解决方法,不胜感激。

谢谢!

0 个答案:

没有答案